summaryrefslogtreecommitdiffstats
path: root/src/Common/SystemBackend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Common/SystemBackend.cpp')
-rw-r--r--src/Common/SystemBackend.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/Common/SystemBackend.cpp b/src/Common/SystemBackend.cpp
index c9be525..4bbc68a 100644
--- a/src/Common/SystemBackend.cpp
+++ b/src/Common/SystemBackend.cpp
@@ -22,7 +22,34 @@
namespace Mad {
namespace Common {
-std::auto_ptr<SystemBackend> SystemBackend::backend(new SystemBackend());
+std::set<SystemBackend*> SystemBackend::backends;
+
+SystemBackend::UptimeInfo SystemBackend::getUptimeInfo() {
+ UptimeInfo ret = {0, 0};
+
+ for(std::set<SystemBackend*>::iterator backend = backends.begin(); backend != backends.end() && ret.uptime == 0; ++backend)
+ ret = (*backend)->uptimeInfo();
+
+ return ret;
+}
+
+SystemBackend::MemoryInfo SystemBackend::getMemoryInfo() {
+ MemoryInfo ret = {0, 0, 0, 0};
+
+ for(std::set<SystemBackend*>::iterator backend = backends.begin(); backend != backends.end() && ret.totalMem == 0; ++backend)
+ ret = (*backend)->memoryInfo();
+
+ return ret;
+}
+
+SystemBackend::LoadInfo SystemBackend::getLoadInfo() {
+ LoadInfo ret = {0, 0, 0, 0, 0};
+
+ for(std::set<SystemBackend*>::iterator backend = backends.begin(); backend != backends.end() && ret.currentLoad == 0 && ret.loadAvg1 == 0 && ret.nProcesses == 0; ++backend)
+ ret = (*backend)->loadInfo();
+
+ return ret;
+}
}
}