From da703185cd28357c8b96d9d29d75ecea61c7f10e Mon Sep 17 00:00:00 2001 From: simplepad <35456194+simplepad@users.noreply.github.com> Date: Fri, 13 Oct 2023 01:08:49 +0800 Subject: [PATCH] add upload/download session stats per torrent to the daemon --- libtransmission/quark.cc | 3 +++ libtransmission/quark.h | 3 +++ libtransmission/rpcimpl.cc | 6 ++++++ libtransmission/torrent.cc | 3 +++ libtransmission/transmission.h | 13 +++++++++++++ 5 files changed, 28 insertions(+) diff --git a/libtransmission/quark.cc b/libtransmission/quark.cc index 5c8468ffc..ade512efd 100644 --- a/libtransmission/quark.cc +++ b/libtransmission/quark.cc @@ -72,6 +72,7 @@ auto constexpr MyStatic = std::array{ "cookies"sv, "corrupt"sv, "corruptEver"sv, + "corruptThisSession"sv, "created by"sv, "created by.utf-8"sv, "creation date"sv, @@ -103,6 +104,7 @@ auto constexpr MyStatic = std::array{ "downloaded-bytes"sv, "downloadedBytes"sv, "downloadedEver"sv, + "downloadedThisSession"sv, "downloaders"sv, "downloading-time-seconds"sv, "dropped"sv, @@ -411,6 +413,7 @@ auto constexpr MyStatic = std::array{ "uploaded-bytes"sv, "uploadedBytes"sv, "uploadedEver"sv, + "uploadedThisSession"sv, "url-list"sv, "use-global-speed-limit"sv, "use-speed-limit"sv, diff --git a/libtransmission/quark.h b/libtransmission/quark.h index 2ed31649c..a63820428 100644 --- a/libtransmission/quark.h +++ b/libtransmission/quark.h @@ -73,6 +73,7 @@ enum TR_KEY_cookies, TR_KEY_corrupt, TR_KEY_corruptEver, + TR_KEY_corruptThisSession, TR_KEY_created_by, TR_KEY_created_by_utf_8, TR_KEY_creation_date, @@ -104,6 +105,7 @@ enum TR_KEY_downloaded_bytes, TR_KEY_downloadedBytes, TR_KEY_downloadedEver, + TR_KEY_downloadedThisSession, TR_KEY_downloaders, TR_KEY_downloading_time_seconds, TR_KEY_dropped, @@ -412,6 +414,7 @@ enum TR_KEY_uploaded_bytes, TR_KEY_uploadedBytes, TR_KEY_uploadedEver, + TR_KEY_uploadedThisSession, TR_KEY_url_list, TR_KEY_use_global_speed_limit, TR_KEY_use_speed_limit, diff --git a/libtransmission/rpcimpl.cc b/libtransmission/rpcimpl.cc index ce7f547b9..a54aed3c6 100644 --- a/libtransmission/rpcimpl.cc +++ b/libtransmission/rpcimpl.cc @@ -508,6 +508,7 @@ namespace make_torrent_field_helpers case TR_KEY_bandwidthPriority: case TR_KEY_comment: case TR_KEY_corruptEver: + case TR_KEY_corruptThisSession: case TR_KEY_creator: case TR_KEY_dateCreated: case TR_KEY_desiredAvailable: @@ -516,6 +517,7 @@ namespace make_torrent_field_helpers case TR_KEY_downloadLimit: case TR_KEY_downloadLimited: case TR_KEY_downloadedEver: + case TR_KEY_downloadedThisSession: case TR_KEY_editDate: case TR_KEY_error: case TR_KEY_errorString: @@ -577,6 +579,7 @@ namespace make_torrent_field_helpers case TR_KEY_uploadLimited: case TR_KEY_uploadRatio: case TR_KEY_uploadedEver: + case TR_KEY_uploadedThisSession: case TR_KEY_wanted: case TR_KEY_webseeds: case TR_KEY_webseedsSendingToUs: @@ -602,6 +605,7 @@ namespace make_torrent_field_helpers case TR_KEY_bandwidthPriority: return tor.get_priority(); case TR_KEY_comment: return tor.comment(); case TR_KEY_corruptEver: return st.corruptEver; + case TR_KEY_corruptThisSession: return st.corruptThisSession; case TR_KEY_creator: return tor.creator(); case TR_KEY_dateCreated: return tor.date_created(); case TR_KEY_desiredAvailable: return st.desiredAvailable; @@ -610,6 +614,7 @@ namespace make_torrent_field_helpers case TR_KEY_downloadLimit: return tr_torrentGetSpeedLimit_KBps(&tor, TR_DOWN); case TR_KEY_downloadLimited: return tor.uses_speed_limit(TR_DOWN); case TR_KEY_downloadedEver: return st.downloadedEver; + case TR_KEY_downloadedThisSession: return st.downloadedThisSession; case TR_KEY_editDate: return st.editDate; case TR_KEY_error: return st.error; case TR_KEY_errorString: return st.errorString; @@ -671,6 +676,7 @@ namespace make_torrent_field_helpers case TR_KEY_uploadLimited: return tor.uses_speed_limit(TR_UP); case TR_KEY_uploadRatio: return st.ratio; case TR_KEY_uploadedEver: return st.uploadedEver; + case TR_KEY_uploadedThisSession: return st.uploadedThisSession; case TR_KEY_wanted: return make_file_wanted_vec(tor); case TR_KEY_webseeds: return make_webseed_vec(tor); case TR_KEY_webseedsSendingToUs: return st.webseedsSendingToUs; diff --git a/libtransmission/torrent.cc b/libtransmission/torrent.cc index 6a20157d6..49f2250eb 100644 --- a/libtransmission/torrent.cc +++ b/libtransmission/torrent.cc @@ -1337,8 +1337,11 @@ tr_stat tr_torrent::stats() const stats.secondsDownloading = this->seconds_downloading(now_sec); stats.corruptEver = this->bytes_corrupt_.ever(); + stats.corruptThisSession = this->bytes_corrupt_.during_this_session(); stats.downloadedEver = this->bytes_downloaded_.ever(); + stats.downloadedThisSession = this->bytes_downloaded_.during_this_session(); stats.uploadedEver = this->bytes_uploaded_.ever(); + stats.uploadedThisSession = this->bytes_uploaded_.during_this_session(); stats.haveValid = this->completion_.has_valid(); stats.haveUnchecked = this->has_total() - stats.haveValid; stats.desiredAvailable = tr_peerMgrGetDesiredAvailable(this); diff --git a/libtransmission/transmission.h b/libtransmission/transmission.h index 2c3730cb6..95928c753 100644 --- a/libtransmission/transmission.h +++ b/libtransmission/transmission.h @@ -1442,14 +1442,27 @@ struct tr_stat grow very large. */ uint64_t corruptEver; + /** Byte count of all the corrupt data you've downloaded during this session for + this torrent. If you're on a poisoned torrent, this number can + grow very large. */ + uint64_t corruptThisSession; + /** Byte count of all data you've ever uploaded for this torrent. */ uint64_t uploadedEver; + /** Byte count of all data you've uploaded during this session for this torrent. */ + uint64_t uploadedThisSession; + /** Byte count of all the non-corrupt data you've ever downloaded for this torrent. If you deleted the files and downloaded a second time, this will be `2*totalSize`.. */ uint64_t downloadedEver; + /** Byte count of all the non-corrupt data you've downloaded during this session + for this torrent. If you deleted the files and downloaded a second + time, this will be `2*totalSize`.. */ + uint64_t downloadedThisSession; + /** Byte count of all the checksum-verified data we have for this torrent. */ uint64_t haveValid;