warcps.cpp

来自「ftpserver very good sample」· C++ 代码 · 共 106 行

CPP
106
字号
#include "StdAfx.h"#include "WarCps.h"   // class implemented/////////////////////////////// PUBLIC /////////////////////////////////////////============================= LIFECYCLE ====================================WarCps::WarCps(const unsigned delayMs,        const unsigned holdMs,        const unsigned minCnt,        const unsigned maxCnt,        const unsigned minCps,        const unsigned maxCps)        : mDelayMs(delayMs),        mHoldMs(holdMs),        mMinCnt(minCnt),        mMaxCnt(maxCnt),        mMinCps(minCps),        mMaxCps(maxCps),        mBytesRecorded(0){}// WarCpsWarCps::~WarCps(){}// ~WarCps//============================= OPERATORS ====================================WarCps& WarCps::operator = (WarCps& from){    mDelayMs = from.mDelayMs;    mHoldMs = from.mHoldMs;    mMinCnt = from.mMinCnt;    mMaxCnt = from.mMaxCnt;    mMinCps = from.mMinCps;    mMaxCps = from.mMaxCps;    mSamples = from.mSamples;    mBytesRecorded = from.mBytesRecorded;    return *this;}//============================= OPERATIONS ===================================int WarCps::GetCps(){    if (mSamples.size() < mMinCnt)        return -1;    return mSamples.back().GetCps(mSamples.front());}bool WarCps::IsOverLimit(){    int cps;    if ((0 == mMaxCps) || ((cps = GetCps()) < 0))        return false;    return GetCps() > (int)mMaxCps;}bool WarCps::IsUnderLimit(){    if ((0 == mMinCps) || (mSamples.size() < mMaxCnt))        return false; // We need more samples    int current_cps = GetCps();    if (current_cps < 0)        return false; // No cps returned    return GetCps() < (int)mMinCps;}void WarCps::Record(const war_flen_t& bytes){    mBytesRecorded += bytes;    if (mSamples.empty()         || mSamples.front().GetTime().IsTimeOut(mDelayMs))    {        mSamples.push_back(WarCpsTimestamp(mBytesRecorded));                if (mSamples.size() > mMaxCnt)            mSamples.pop_front();    }}WarTime WarCps::GetNextCpsTime(){    return WarTime(mSamples.back().GetNextCpsTime(mSamples.front(),        mMaxCps).mTime + mHoldMs);}//============================= ACCESS     ===================================//============================= INQUIRY    ===================================/////////////////////////////// PROTECTED  ////////////////////////////////////////////////////////////////// PRIVATE    ///////////////////////////////////

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?