⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transfercalculator.cpp

📁 mysee网络直播源代码Mysee Lite是Mysee独立研发的网络视频流媒体播放系统。在应有了P2P技术和一系列先进流媒体技术之后
💻 CPP
字号:
/*
*  Openmysee
*
*  This program is free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software
*  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*
*/
// TransferCalculator.cpp: implementation of the TransferCalculator class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "TransferCalculator.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

TransferCalculator::TransferCalculator() {
	ClearTransferInfo();
}

TransferCalculator::~TransferCalculator() {
}

void TransferCalculator::GetTransferInfo(TransferInfo& ti) {
	ti.avgDownSpeed = avgDownSpeed;
	ti.avgUpSpeed = avgUpSpeed;
	ti.currDownSpeed = currDownSpeed;
	ti.currUpSpeed = currUpSpeed;
	ti.totalDownBytes = totalDownBytes;
	ti.totalUpBytes = totalUpBytes;
}

void TransferCalculator::ClearTransferInfo() {
	totalstartTime = tmpStartTime = timeGetTime();
	tmpOldDownBytes = tmpOldUpBytes = 0;
	totalDownBytes = totalUpBytes = 0;
	currDownSpeed = currUpSpeed = avgDownSpeed = avgUpSpeed = 0;
}

void TransferCalculator::GenerateTransferInfo(BOOL calAvg) {
	DWORD tNow = timeGetTime();
	/**********每三秒钟计算一次最近的下载/上传速度**********/
	if(tNow - tmpStartTime > 3000) {
		DWORD tmpTime = tNow - tmpStartTime;
		DWORD tmpBytes = (DWORD)(totalDownBytes - tmpOldDownBytes);
		if(tmpBytes <= 0 || tmpTime <= 0)
			currDownSpeed = 0;
		else
			currDownSpeed = ((float)tmpBytes*1024/tmpTime);

		tmpBytes = (DWORD)(totalUpBytes - tmpOldUpBytes);
		if(tmpBytes <= 0 || tmpTime <= 0)
			currUpSpeed = 0;
		else
			currUpSpeed = ((float)tmpBytes*1024/tmpTime);

		tmpStartTime = timeGetTime();
		tmpOldDownBytes = totalDownBytes;
		tmpOldUpBytes = totalUpBytes;
	}

	/**********有必要时计算一次总共的平均下载/上传速度**********/
	if(calAvg) {
		DWORD usedTime = (tNow - totalstartTime)/1000;
		if(usedTime) {
			avgDownSpeed = ((float)totalDownBytes/usedTime);
			avgUpSpeed = ((float)totalUpBytes/usedTime);
		}
	}
}

⌨️ 快捷键说明

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