00001 /* 00002 Free Download Manager Copyright (c) 2003-2007 FreeDownloadManager.ORG 00003 Open Download Manager Copyright (c) 2008-2010 OpenDownloadManager.ORG 00004 */ 00005 00006 #include "stdafx.h" 00007 #include "vmsSpeedTracker.h" 00008 00009 #ifdef _DEBUG 00010 #undef THIS_FILE 00011 static char THIS_FILE[]=__FILE__; 00012 #define new DEBUG_NEW 00013 #endif 00014 00015 vmsSpeedTracker::vmsSpeedTracker() 00016 { 00017 m_nLowSpeedFactor = 3; 00018 m_nLowSpeedDuration = 60; 00019 00020 Reset (); 00021 } 00022 00023 vmsSpeedTracker::~vmsSpeedTracker() 00024 { 00025 00026 } 00027 00028 void vmsSpeedTracker::CurrentSpeedIs(int nSpeed) 00029 { 00030 if (m_cAvrSpeedsAtStart < 20) 00031 { 00032 m_nAvrSpeedAtStart = (m_nAvrSpeedAtStart * m_cAvrSpeedsAtStart + nSpeed) / 00033 (m_cAvrSpeedsAtStart + 1); 00034 m_cAvrSpeedsAtStart++; 00035 00036 LOG ("[speed] [measure " << (DWORD)m_cAvrSpeedsAtStart << "] avg: " << (DWORD)m_nAvrSpeedAtStart << nl); 00037 } 00038 else 00039 { 00040 LOG ("[speed] avg: " << (DWORD)m_nAvrSpeedAtStart << " current: " << (DWORD)nSpeed << nl); 00041 00042 if (nSpeed == 0 || m_nAvrSpeedAtStart / nSpeed >= (UINT)m_nLowSpeedFactor) 00043 m_cTooLowSpeeds++; 00044 else 00045 m_cTooLowSpeeds = 0; 00046 } 00047 } 00048 00049 bool vmsSpeedTracker::CheckCurrentSpeedTooLow() 00050 { 00051 return m_cTooLowSpeeds > m_nLowSpeedDuration; 00052 } 00053 00054 void vmsSpeedTracker::Reset() 00055 { 00056 m_nAvrSpeedAtStart = 0; 00057 m_cAvrSpeedsAtStart = 0; 00058 m_cTooLowSpeeds = 0; 00059 } 00060 00061 void vmsSpeedTracker::set_LowSpeedFactor(int i) 00062 { 00063 if (i > 1) 00064 m_nLowSpeedFactor = i; 00065 } 00066 00067 void vmsSpeedTracker::set_LowSpeedDuration(int i) 00068 { 00069 if (i >= 60) 00070 m_nLowSpeedDuration = i; 00071 }
1.5.6