[Libreoffice-commits] online.git: wsd/DocumentBroker.cpp wsd/DocumentBroker.hpp wsd/LOOLWSD.cpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Mon Jan 2 06:15:11 UTC 2017
wsd/DocumentBroker.cpp | 2 +-
wsd/DocumentBroker.hpp | 8 ++++++--
wsd/LOOLWSD.cpp | 10 ++++++----
3 files changed, 13 insertions(+), 7 deletions(-)
New commits:
commit 65d2036d63fa9304b1c8a88f18f946ba02bb1001
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sun Jan 1 18:16:56 2017 -0500
wsd: use chrono instead of time_t
While time_t is much simpler, it's too
opaque. The new chrono library is type-safe
and does conversion correctly, as well as
guarantees monotonity and other desirable
properties.
Change-Id: Id41c44c397a31d73e894e8f1715ff18f2b67df53
Reviewed-on: https://gerrit.libreoffice.org/32627
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index af13b73..dd15f06 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -1089,7 +1089,7 @@ void DocumentBroker::closeDocument(const std::string& reason)
void DocumentBroker::updateLastActivityTime()
{
- _lastActivity = std::time(nullptr);
+ _lastActivity = std::chrono::steady_clock::now();
Admin::instance().updateLastActivityTime(_docKey);
}
diff --git a/wsd/DocumentBroker.hpp b/wsd/DocumentBroker.hpp
index d913adc..54eb3be 100644
--- a/wsd/DocumentBroker.hpp
+++ b/wsd/DocumentBroker.hpp
@@ -301,7 +301,11 @@ public:
void updateLastActivityTime();
- std::time_t getIdleTime() const { return std::time(nullptr) - _lastActivity; }
+ std::size_t getIdleTimeSecs() const
+ {
+ const auto duration = (std::chrono::steady_clock::now() - _lastActivity);
+ return std::chrono::duration_cast<std::chrono::seconds>(duration).count();
+ }
private:
/// Sends the .uno:Save command to LoKit.
@@ -346,7 +350,7 @@ private:
int _debugRenderedTileCount;
- std::time_t _lastActivity;
+ std::chrono::steady_clock::time_point _lastActivity;
static constexpr auto IdleSaveDurationMs = 30 * 1000;
static constexpr auto AutoSaveDurationMs = 300 * 1000;
diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp
index 3a07668..0268407 100644
--- a/wsd/LOOLWSD.cpp
+++ b/wsd/LOOLWSD.cpp
@@ -274,7 +274,7 @@ bool cleanupDocBrokers()
auto lock = docBroker->getLock();
// Remove idle documents after 1 hour.
- const bool idle = (docBroker->getIdleTime() >= 3600);
+ const bool idle = (docBroker->getIdleTimeSecs() >= 3600);
// Cleanup used and dead entries.
if (docBroker->isLoaded() &&
@@ -2086,11 +2086,12 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
LOG_INF("Starting master server listening on " << ClientPortNumber);
srv.start();
+
#if ENABLE_DEBUG
time_t startTimeSpan = time(nullptr);
#endif
- time_t last30SecCheck = time(nullptr);
+ auto last30SecCheckTime = std::chrono::steady_clock::now();
int status = 0;
while (!TerminationFlag && !SigUtil::isShuttingDown())
{
@@ -2173,7 +2174,8 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
// Nothing more to do this round.
}
else if (!std::getenv("LOOL_NO_AUTOSAVE") &&
- (time(nullptr) >= last30SecCheck + 30))
+ std::chrono::duration_cast<std::chrono::seconds>
+ (std::chrono::steady_clock::now() - last30SecCheckTime).count() >= 30)
{
try
{
@@ -2190,7 +2192,7 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
LOG_ERR("Exception: " << exc.what());
}
- last30SecCheck = time(nullptr);
+ last30SecCheckTime = std::chrono::steady_clock::now();
}
else
{
More information about the Libreoffice-commits
mailing list