summaryrefslogtreecommitdiffstats
path: root/src/Common/Backends
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2008-09-19 12:55:56 +0200
committerMatthias Schiffer <matthias@gamezock.de>2008-09-19 12:55:56 +0200
commit5286ffcb30e3005569199c45bca38dfbf346cec3 (patch)
treeefe2d679c2dbec2618a37cf5f0edd85a067919b3 /src/Common/Backends
parent45c735361b483bd44b5b59c3fb4b055ddbad129a (diff)
downloadmad-5286ffcb30e3005569199c45bca38dfbf346cec3.tar
mad-5286ffcb30e3005569199c45bca38dfbf346cec3.zip
Dateien in SystemBackendProc nicht nach jeder Abfrage schlie?en
Diffstat (limited to 'src/Common/Backends')
-rw-r--r--src/Common/Backends/FileLogger.h2
-rw-r--r--src/Common/Backends/SystemBackendProc.cpp25
-rw-r--r--src/Common/Backends/SystemBackendProc.h11
3 files changed, 21 insertions, 17 deletions
diff --git a/src/Common/Backends/FileLogger.h b/src/Common/Backends/FileLogger.h
index 8a72bec..09946df 100644
--- a/src/Common/Backends/FileLogger.h
+++ b/src/Common/Backends/FileLogger.h
@@ -36,7 +36,7 @@ class FileLogger : public Logger {
public:
FileLogger(const std::string &filename)
- : file(filename.c_str(), std::ios_base::out|std::ios_base::app) {}
+ : file(filename.c_str(), std::ios::out|std::ios::app) {}
};
}
diff --git a/src/Common/Backends/SystemBackendProc.cpp b/src/Common/Backends/SystemBackendProc.cpp
index 3a3f283..f2d9152 100644
--- a/src/Common/Backends/SystemBackendProc.cpp
+++ b/src/Common/Backends/SystemBackendProc.cpp
@@ -19,30 +19,29 @@
#include "SystemBackendProc.h"
-#include <fstream>
#include <pcrecpp.h>
namespace Mad {
namespace Common {
namespace Backends {
-SystemBackend::UptimeInfo SystemBackendProc::getUptimeInfo() const {
+SystemBackend::UptimeInfo SystemBackendProc::getUptimeInfo() {
UptimeInfo uptime = {0, 0};
- std::ifstream file("/proc/uptime");
+ uptimeFile.seekg(0, std::ios::beg);
- if(!file.good())
+ if(!uptimeFile.good())
return uptime;
float f;
- file >> f;
- if(!file.good())
+ uptimeFile >> f;
+ if(!uptimeFile.good())
return uptime;
uptime.uptime = (unsigned long)f;
- file >> f;
- if(!file.good())
+ uptimeFile >> f;
+ if(!uptimeFile.good())
return uptime;
uptime.idleTime = (unsigned long)f;
@@ -50,19 +49,19 @@ SystemBackend::UptimeInfo SystemBackendProc::getUptimeInfo() const {
return uptime;
}
-SystemBackend::MemoryInfo SystemBackendProc::getMemoryInfo() const {
+SystemBackend::MemoryInfo SystemBackendProc::getMemoryInfo() {
MemoryInfo memInfo = {0, 0, 0, 0};
- std::ifstream file("/proc/meminfo");
+ meminfoFile.seekg(0, std::ios::beg);
- if(!file.good())
+ if(!meminfoFile.good())
return memInfo;
pcrecpp::RE re("(.+):\\s*(\\d+).*");
- while(!file.eof() && file.good()) {
+ while(!meminfoFile.eof() && meminfoFile.good()) {
std::string line;
- std::getline(file, line);
+ std::getline(meminfoFile, line);
std::string name;
unsigned long value;
diff --git a/src/Common/Backends/SystemBackendProc.h b/src/Common/Backends/SystemBackendProc.h
index 2a85b86..fb9ecf5 100644
--- a/src/Common/Backends/SystemBackendProc.h
+++ b/src/Common/Backends/SystemBackendProc.h
@@ -22,21 +22,26 @@
#include "../SystemBackend.h"
+#include <fstream>
+
namespace Mad {
namespace Common {
namespace Backends {
class SystemBackendProc : public SystemBackend {
private:
- SystemBackendProc() {}
+ std::ifstream uptimeFile;
+ std::ifstream meminfoFile;
+
+ SystemBackendProc() : uptimeFile("/proc/uptime"), meminfoFile("/proc/meminfo") {}
public:
static void useBackend() {
setBackend(std::auto_ptr<SystemBackend>(new SystemBackendProc()));
}
- virtual UptimeInfo getUptimeInfo() const;
- virtual MemoryInfo getMemoryInfo() const;
+ virtual UptimeInfo getUptimeInfo();
+ virtual MemoryInfo getMemoryInfo();
};
}