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.nakash...@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 <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@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 { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits