Michael - 2005-06-17

Logged In: YES
user_id=136143

I'm guessing the ResetDLTimer is just for rate estimating
purposes. So I think this would work.

--- ctorrent-1.3.4-orig/rate.h 2004-09-08 16:10:51.000000000
-0700
+++ ctorrent-1.3.4-current/rate.h 2005-06-16
02:58:09.000000000 -0700
@@ -10,9 +10,10 @@
time_t m_last_timestamp;
time_t m_total_timeused;
u_int64_t m_count_bytes;
+ u_int64_t m_recent_base;
public:
- Rate(){ m_last_timestamp = m_total_timeused = (time_t)0;
m_count_bytes = 0; }
- void Reset(){ m_last_timestamp = m_total_timeused =
(time_t)0; m_count_bytes = 0;}
+ Rate(){ m_last_timestamp = m_total_timeused = (time_t)0;
m_recent_base = m_count_bytes = 0; }
+ void Reset(){ m_last_timestamp = m_total_timeused =
(time_t)0; m_recent_base = m_count_bytes;}
void StartTimer();
void StopTimer();
void CountAdd(size_t nbytes);
--- ctorrent-1.3.4-orig/rate.cpp 2004-09-08
16:10:51.000000000 -0700
+++ ctorrent-1.3.4-current/rate.cpp 2005-06-16
02:59:37.000000000 -0700
@@ -29,14 +29,14 @@
time_t timeused = m_total_timeused;
if( m_last_timestamp ) timeused += (time((time_t*) 0) -
m_last_timestamp);
if( timeused < 1 ) timeused = 1;
- return (size_t)(m_count_bytes / timeused);
+ return (size_t)((m_count_bytes - m_recent_base) / timeused);
}

size_t Rate::RateMeasure(const Rate &ra_to) const
{
time_t timeused = time((time_t*) 0) - m_last_timestamp;
if( timeused < 1 ) timeused = 1;
- return (size_t)((ra_to.m_count_bytes - m_count_bytes) /
timeused);
+ return (size_t)(((ra_to.m_count_bytes -
ra_to.m_recent_base) - (m_count_bytes - m_recent_base)) /
timeused);
}

time_t Rate::TimeUsed(const time_t *pnow) const