From 7e343a9d6f40ada7dbadb2b63bc6624570d27c06 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Mon, 8 Feb 2010 04:51:34 +0000 Subject: [PATCH] add size logging to various classes --- include/libtorrent/stat.hpp | 23 +++++++++ include/libtorrent/torrent.hpp | 6 ++- src/session_impl.cpp | 8 ++- src/torrent.cpp | 89 ++++++++++++++++++++++++++++++++++ 4 files changed, 124 insertions(+), 2 deletions(-) diff --git a/include/libtorrent/stat.hpp b/include/libtorrent/stat.hpp index 86b58250b..094458f4e 100644 --- a/include/libtorrent/stat.hpp +++ b/include/libtorrent/stat.hpp @@ -43,6 +43,10 @@ POSSIBILITY OF SUCH DAMAGE. #include "libtorrent/config.hpp" #include "libtorrent/assert.hpp" +#if defined TORRENT_VERBOSE_LOGGING || defined TORRENT_LOGGING || defined TORRENT_ERROR_LOGGING +#include "libtorrent/debug.hpp" // for logger +#endif + namespace libtorrent { class TORRENT_EXPORT stat_channel @@ -51,6 +55,25 @@ namespace libtorrent public: enum { history = 10 }; +#if defined TORRENT_VERBOSE_LOGGING || defined TORRENT_LOGGING || defined TORRENT_ERROR_LOGGING + +#define PRINT_SIZEOF(x) l << "sizeof(" #x "): " << sizeof(x) << "\n"; +#define PRINT_OFFSETOF(x, y) l << " offsetof(" #x "," #y "): " << offsetof(x, y) << "\n"; + + static void print_size(logger& l) + { + PRINT_SIZEOF(stat_channel) + PRINT_OFFSETOF(stat_channel, m_rate_history) + PRINT_OFFSETOF(stat_channel, m_window) + PRINT_OFFSETOF(stat_channel, m_counter) + PRINT_OFFSETOF(stat_channel, m_total_counter) + PRINT_OFFSETOF(stat_channel, m_rate_sum) + } +#undef PRINT_SIZEOF +#undef PRINT_OFFSETOF + +#endif + stat_channel() : m_window(3) , m_counter(0) diff --git a/include/libtorrent/torrent.hpp b/include/libtorrent/torrent.hpp index 5e2748aae..964d04ce8 100644 --- a/include/libtorrent/torrent.hpp +++ b/include/libtorrent/torrent.hpp @@ -75,7 +75,7 @@ POSSIBILITY OF SUCH DAMAGE. namespace libtorrent { -#if defined(TORRENT_VERBOSE_LOGGING) || defined(TORRENT_LOGGING) +#if defined TORRENT_VERBOSE_LOGGING || defined TORRENT_LOGGING || defined TORRENT_ERROR_LOGGING struct logger; #endif @@ -727,6 +727,10 @@ namespace libtorrent // that are not private void lsd_announce(); +#if defined TORRENT_VERBOSE_LOGGING || defined TORRENT_LOGGING || defined TORRENT_ERROR_LOGGING + static void print_size(logger& l); +#endif + private: void on_files_deleted(int ret, disk_io_job const& j); diff --git a/src/session_impl.cpp b/src/session_impl.cpp index b269d1a08..f9f6ef628 100644 --- a/src/session_impl.cpp +++ b/src/session_impl.cpp @@ -502,7 +502,13 @@ namespace aux { #define PRINT_SIZEOF(x) (*m_logger) << "sizeof(" #x "): " << sizeof(x) << "\n"; #define PRINT_OFFSETOF(x, y) (*m_logger) << " offsetof(" #x "," #y "): " << offsetof(x, y) << "\n"; - PRINT_SIZEOF(torrent) + PRINT_SIZEOF(request_callback) + PRINT_SIZEOF(stat) + PRINT_SIZEOF(bandwidth_channel) + PRINT_SIZEOF(policy) + stat_channel::print_size(*m_logger); + torrent::print_size(*m_logger); + PRINT_SIZEOF(peer_connection) PRINT_SIZEOF(bt_peer_connection) PRINT_SIZEOF(address) diff --git a/src/torrent.cpp b/src/torrent.cpp index 2dbab9e79..293e3c2c1 100644 --- a/src/torrent.cpp +++ b/src/torrent.cpp @@ -196,6 +196,95 @@ namespace namespace libtorrent { +#if defined TORRENT_VERBOSE_LOGGING || defined TORRENT_LOGGING || defined TORRENT_ERROR_LOGGING + +#define PRINT_SIZEOF(x) l << "sizeof(" #x "): " << sizeof(x) << "\n"; +#define PRINT_OFFSETOF(x, y) l << " offsetof(" #x "," #y "): " << offsetof(x, y) << "\n"; + + void torrent::print_size(logger& l) + { + PRINT_SIZEOF(torrent) + PRINT_OFFSETOF(torrent, m_policy) + PRINT_OFFSETOF(torrent, m_active_time) + PRINT_OFFSETOF(torrent, m_finished_time) + PRINT_OFFSETOF(torrent, m_seeding_time) + PRINT_OFFSETOF(torrent, m_total_uploaded) + PRINT_OFFSETOF(torrent, m_total_downloaded) + PRINT_OFFSETOF(torrent, m_started) + PRINT_OFFSETOF(torrent, m_last_scrape) + PRINT_OFFSETOF(torrent, m_upload_mode_time) + PRINT_OFFSETOF(torrent, m_torrent_file) + PRINT_OFFSETOF(torrent, m_owning_storage) + PRINT_OFFSETOF(torrent, m_storage) + PRINT_OFFSETOF(torrent, m_connections) + PRINT_OFFSETOF(torrent, m_web_seeds) + PRINT_OFFSETOF(torrent, m_web_seeds_next_retry) + PRINT_OFFSETOF(torrent, m_resolving_web_seeds) +#ifndef TORRENT_DISABLE_EXTENSIONS + PRINT_OFFSETOF(torrent, m_extensions) +#endif + PRINT_OFFSETOF(torrent, m_host_resolver) +#ifndef TORRENT_DISABLE_DHT + PRINT_OFFSETOF(torrent, m_dht_announce_timer) +#endif + PRINT_OFFSETOF(torrent, m_tracker_timer) +#ifndef TORRENT_DISABLE_DHT + PRINT_OFFSETOF(torrent, m_last_dht_announce) +#endif + PRINT_OFFSETOF(torrent, m_stat) + PRINT_OFFSETOF(torrent, m_ses) + PRINT_OFFSETOF(torrent, m_file_priority) + PRINT_OFFSETOF(torrent, m_file_progress) + PRINT_OFFSETOF(torrent, m_picker) + PRINT_OFFSETOF(torrent, m_trackers) + PRINT_OFFSETOF(torrent, m_time_critical_pieces) + PRINT_OFFSETOF(torrent, m_average_piece_time) + PRINT_OFFSETOF(torrent, m_piece_time_deviation) + PRINT_OFFSETOF(torrent, m_total_failed_bytes) + PRINT_OFFSETOF(torrent, m_total_redundant_bytes) + PRINT_OFFSETOF(torrent, m_padding) + PRINT_OFFSETOF(torrent, m_username) + PRINT_OFFSETOF(torrent, m_password) + PRINT_OFFSETOF(torrent, m_net_interface) + PRINT_OFFSETOF(torrent, m_save_path) + PRINT_OFFSETOF(torrent, m_verified) + PRINT_OFFSETOF(torrent, m_num_verified) + PRINT_OFFSETOF(torrent, m_available_free_upload) + PRINT_OFFSETOF(torrent, m_storage_mode) + PRINT_OFFSETOF(torrent, m_state) + PRINT_OFFSETOF(torrent, m_error) + PRINT_OFFSETOF(torrent, m_error_file) + PRINT_OFFSETOF(torrent, m_resume_data) + PRINT_OFFSETOF(torrent, m_resume_entry) + PRINT_OFFSETOF(torrent, m_name) +#ifndef TORRENT_DISABLE_ENCRYPTION + PRINT_OFFSETOF(torrent, m_obfuscated_hash) +#endif + PRINT_OFFSETOF(torrent, m_settings) + PRINT_OFFSETOF(torrent, m_storage_constructor) + PRINT_OFFSETOF(torrent, m_progress_ppm) + PRINT_OFFSETOF(torrent, m_ratio) + PRINT_OFFSETOF(torrent, m_max_uploads) + PRINT_OFFSETOF(torrent, m_num_uploads) + PRINT_OFFSETOF(torrent, m_max_connections) + PRINT_OFFSETOF(torrent, m_block_size) + PRINT_OFFSETOF(torrent, m_complete) + PRINT_OFFSETOF(torrent, m_incomplete) +#ifdef TORRENT_DEBUG + PRINT_OFFSETOF(torrent, m_initial_done) +#endif + PRINT_OFFSETOF(torrent, m_deficit_counter) + PRINT_OFFSETOF(torrent, m_sequence_number) + PRINT_OFFSETOF(torrent, m_last_working_tracker) + PRINT_OFFSETOF(torrent, m_failed_trackers) + PRINT_OFFSETOF(torrent, m_time_scaler) + PRINT_OFFSETOF(torrent, m_priority) + } +#undef PRINT_SIZEOF +#undef PRINT_OFFSETOF + +#endif + torrent::torrent( session_impl& ses , tcp::endpoint const& net_interface