diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2008-09-19 12:55:56 +0200 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2008-09-19 12:55:56 +0200 |
commit | 5286ffcb30e3005569199c45bca38dfbf346cec3 (patch) | |
tree | efe2d679c2dbec2618a37cf5f0edd85a067919b3 /src/Common/Backends | |
parent | 45c735361b483bd44b5b59c3fb4b055ddbad129a (diff) | |
download | mad-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.h | 2 | ||||
-rw-r--r-- | src/Common/Backends/SystemBackendProc.cpp | 25 | ||||
-rw-r--r-- | src/Common/Backends/SystemBackendProc.h | 11 |
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(); }; } |