[Libreoffice-commits] online.git: wsd/Admin.cpp wsd/Admin.hpp

Ashod Nakashian ashod.nakashian at collabora.co.uk
Mon Jan 30 02:10:31 UTC 2017


 wsd/Admin.cpp |   16 ++++++++--------
 wsd/Admin.hpp |    8 ++++++--
 2 files changed, 14 insertions(+), 10 deletions(-)

New commits:
commit 292400eeed5393a60345955835dbcc1306a82fde
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Sun Jan 29 14:18:55 2017 -0500

    wsd: reuse the timer-based memory stats for admin requests
    
    Change-Id: I3778458043174fb5489617d022445205daf91532
    Reviewed-on: https://gerrit.libreoffice.org/33673
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/wsd/Admin.cpp b/wsd/Admin.cpp
index 7a38723..6cfe993 100644
--- a/wsd/Admin.cpp
+++ b/wsd/Admin.cpp
@@ -117,7 +117,7 @@ bool AdminRequestHandler::adminCommandHandler(const std::vector<char>& payload)
     }
     else if (tokens[0] == "total_mem")
     {
-        const auto totalMem = _admin->getTotalMemoryUsage(model);
+        const auto totalMem = _admin->getTotalMemoryUsage();
         sendTextFrame("total_mem " + std::to_string(totalMem));
     }
     else if (tokens[0] == "kill" && tokens.count() == 2)
@@ -290,8 +290,8 @@ Admin::Admin() :
 {
     Log::info("Admin ctor.");
 
-    _memStatsTask = new MemoryStats(this);
-    _memStatsTimer.schedule(_memStatsTask, _memStatsTaskInterval, _memStatsTaskInterval);
+    _memStatsTask.reset(new MemoryStats(this));
+    _memStatsTimer.schedule(_memStatsTask.get(), _memStatsTaskInterval, _memStatsTaskInterval);
 
     _cpuStatsTask = new CpuStats(this);
     _cpuStatsTimer.schedule(_cpuStatsTask, _cpuStatsTaskInterval, _cpuStatsTaskInterval);
@@ -328,7 +328,7 @@ void MemoryStats::run()
 {
     std::unique_lock<std::mutex> modelLock(_admin->getLock());
     AdminModel& model = _admin->getModel();
-    const auto totalMem = _admin->getTotalMemoryUsage(model);
+    const auto totalMem = model.getTotalMemoryUsage();
 
     if (totalMem != _lastTotalMemory)
     {
@@ -350,8 +350,8 @@ void Admin::rescheduleMemTimer(unsigned interval)
 {
     _memStatsTask->cancel();
     _memStatsTaskInterval = interval;
-    _memStatsTask = new MemoryStats(this);
-    _memStatsTimer.schedule(_memStatsTask, _memStatsTaskInterval, _memStatsTaskInterval);
+    _memStatsTask.reset(new MemoryStats(this));
+    _memStatsTimer.schedule(_memStatsTask.get(), _memStatsTaskInterval, _memStatsTaskInterval);
     Log::info("Memory stats interval changed - New interval: " + std::to_string(interval));
 }
 
@@ -364,10 +364,10 @@ void Admin::rescheduleCpuTimer(unsigned interval)
     Log::info("CPU stats interval changed - New interval: " + std::to_string(interval));
 }
 
-unsigned Admin::getTotalMemoryUsage(AdminModel& model)
+unsigned Admin::getTotalMemoryUsage()
 {
     unsigned totalMem = Util::getMemoryUsage(_forKitPid);
-    totalMem += model.getTotalMemoryUsage();
+    totalMem += _memStatsTask->getLastTotalMemory();
     totalMem += Util::getMemoryUsage(Poco::Process::id());
 
     return totalMem;
diff --git a/wsd/Admin.hpp b/wsd/Admin.hpp
index 52f0bd8..8da6fb8 100644
--- a/wsd/Admin.hpp
+++ b/wsd/Admin.hpp
@@ -48,6 +48,8 @@ private:
     bool _isAuthenticated;
 };
 
+class MemoryStats;
+
 /// An admin command processor.
 class Admin
 {
@@ -60,7 +62,7 @@ public:
         return admin;
     }
 
-    unsigned getTotalMemoryUsage(AdminModel&);
+    unsigned getTotalMemoryUsage();
 
     /// Update the Admin Model.
     void update(const std::string& message);
@@ -105,7 +107,7 @@ private:
     int _forKitPid;
 
     Poco::Util::Timer _memStatsTimer;
-    Poco::Util::TimerTask::Ptr _memStatsTask;
+    std::unique_ptr<MemoryStats> _memStatsTask;
     unsigned _memStatsTaskInterval = 5000;
 
     Poco::Util::Timer _cpuStatsTimer;
@@ -129,6 +131,8 @@ public:
         Log::debug("Memory stat dtor");
     }
 
+    long getLastTotalMemory() { return _lastTotalMemory; }
+
     void run() override;
 
 private:


More information about the Libreoffice-commits mailing list