[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