00001 /* 00002 Free Download Manager Copyright (c) 2003-2007 FreeDownloadManager.ORG 00003 */ 00004 00005 00006 00007 00008 #include <numeric> 00009 00010 #include "libtorrent/stat.hpp" 00011 #include "libtorrent/invariant_check.hpp" 00012 #include <algorithm> 00013 00014 #if defined _MSC_VER && _MSC_VER <= 1200 00015 #define for if (false) {} else for 00016 #endif 00017 00018 using namespace libtorrent; 00019 00020 void libtorrent::stat::second_tick(float tick_interval) 00021 { 00022 INVARIANT_CHECK; 00023 00024 for (int i = history - 2; i >= 0; --i) 00025 { 00026 m_download_rate_history[i + 1] = m_download_rate_history[i]; 00027 m_upload_rate_history[i + 1] = m_upload_rate_history[i]; 00028 m_download_payload_rate_history[i + 1] = m_download_payload_rate_history[i]; 00029 m_upload_payload_rate_history[i + 1] = m_upload_payload_rate_history[i]; 00030 } 00031 00032 m_download_rate_history[0] = (m_downloaded_payload + m_downloaded_protocol) 00033 / tick_interval; 00034 m_upload_rate_history[0] = (m_uploaded_payload + m_uploaded_protocol) 00035 / tick_interval; 00036 m_download_payload_rate_history[0] = m_downloaded_payload / tick_interval; 00037 m_upload_payload_rate_history[0] = m_uploaded_payload / tick_interval; 00038 00039 m_downloaded_payload = 0; 00040 m_uploaded_payload = 0; 00041 m_downloaded_protocol = 0; 00042 m_uploaded_protocol = 0; 00043 00044 m_mean_download_rate = 0; 00045 m_mean_upload_rate = 0; 00046 m_mean_download_payload_rate = 0; 00047 m_mean_upload_payload_rate = 0; 00048 00049 for (int i = 0; i < history; ++i) 00050 { 00051 m_mean_download_rate += m_download_rate_history[i]; 00052 m_mean_upload_rate += m_upload_rate_history[i]; 00053 m_mean_download_payload_rate += m_download_payload_rate_history[i]; 00054 m_mean_upload_payload_rate += m_upload_payload_rate_history[i]; 00055 } 00056 00057 m_mean_download_rate /= history; 00058 m_mean_upload_rate /= history; 00059 m_mean_download_payload_rate /= history; 00060 m_mean_upload_payload_rate /= history; 00061 }
1.5.6