From 693d202a64ae2187a82c9c5c9eed3fa5dcec03ac Mon Sep 17 00:00:00 2001 From: kmikita <72072194+kmikita@users.noreply.github.com> Date: Fri, 5 May 2023 23:33:23 +0300 Subject: [PATCH] refactor: save stats.json periodically and when closing session #5476 (#5490) --- libtransmission/session.cc | 4 ++-- libtransmission/stats.cc | 1 - libtransmission/stats.h | 18 ++---------------- 3 files changed, 4 insertions(+), 19 deletions(-) diff --git a/libtransmission/session.cc b/libtransmission/session.cc index 1f95538f3..49117919f 100644 --- a/libtransmission/session.cc +++ b/libtransmission/session.cc @@ -1323,7 +1323,7 @@ void tr_session::closeImplPart2(std::promise* closed_promise, std::chrono: this->announcer_.reset(); this->announcer_udp_.reset(); - stats().saveIfDirty(); + stats().save(); peer_mgr_.reset(); openFiles().closeAll(); tr_utpClose(this); @@ -2169,7 +2169,7 @@ tr_session::tr_session(std::string_view config_dir, tr_variant* settings_dict) tr_torrentSave(tor); } - stats().saveIfDirty(); + stats().save(); }); save_timer_->startRepeating(SaveIntervalSecs); diff --git a/libtransmission/stats.cc b/libtransmission/stats.cc index a48dd5ca0..e25508522 100644 --- a/libtransmission/stats.cc +++ b/libtransmission/stats.cc @@ -82,7 +82,6 @@ void tr_stats::save() const void tr_stats::clear() { single_ = old_ = Zero; - is_dirty_ = true; start_time_ = tr_time(); } diff --git a/libtransmission/stats.h b/libtransmission/stats.h index 30e6c26f7..e5dadddf6 100644 --- a/libtransmission/stats.h +++ b/libtransmission/stats.h @@ -30,7 +30,7 @@ public: ~tr_stats() { - saveIfDirty(); + save(); } void clear(); @@ -45,35 +45,23 @@ public: constexpr void addUploaded(uint32_t n_bytes) noexcept { single_.uploadedBytes += n_bytes; - is_dirty_ = true; } constexpr void addDownloaded(uint32_t n_bytes) noexcept { single_.downloadedBytes += n_bytes; - is_dirty_ = true; } constexpr void addFileCreated() noexcept { ++single_.filesAdded; - is_dirty_ = true; } - void saveIfDirty() - { - if (is_dirty_) - { - save(); - is_dirty_ = false; - } - } + void save() const; private: static tr_session_stats add(tr_session_stats const& a, tr_session_stats const& b); - void save() const; - static tr_session_stats loadOldStats(std::string_view config_dir); std::string const config_dir_; @@ -82,6 +70,4 @@ private: static constexpr auto Zero = tr_session_stats{ TR_RATIO_NA, 0U, 0U, 0U, 0U, 0U }; tr_session_stats single_ = Zero; tr_session_stats old_ = Zero; - - bool is_dirty_ = false; };