bandwidthmanager.h

来自「模拟P2P各种网络环境的,适合新手们的学习,不错的源码.」· C头文件 代码 · 共 57 行

H
57
字号
#ifndef _BandwidthManager_h
#define _BandwidthManager_h

#include "Common.h"

class Connection;

class BandwidthManager
{
private:
	unsigned long mBandwidth; /* total bandwidth */
	unsigned long mBandwidthIn; /* total bandwidth for front direction */
	unsigned long mBandwidthOut; /*total bandwidth for back direction */
	unsigned long mAvailableBandwidthIn; /* available bandwidth for front direction */
	unsigned long mAvailableBandwidthOut; /* available bandwidth for back direction */
	
	set<Connection *> mActiveConnectionSetIn;
	set<Connection *> mInactiveConnectionSetIn;
	set<Connection *> mActiveConnectionSetOut;
	set<Connection *> mInactiveConnectionSetOut;
public:
	BandwidthManager();
	~BandwidthManager();
	
	void setBandwidth(unsigned long bandwidth);
	void setBandwidth(bool flag, unsigned long bandwidth);
	unsigned long getBandwidth() const;
	unsigned long getBandwidth(bool flag) const;
	
	unsigned long getAvailableBandwidth(bool flag) const;
	unsigned long getAverageBandwidthA(bool flag) const;
	unsigned long getAverageBandwidthB(bool flag) const;

	int getActiveNumber(bool flag) const;
	int getInactiveNumber(bool flag) const;
	
	set<Connection *> getActiveConnectionSet(bool flag) const;
	set<Connection *> getInactiveConnectionSet(bool flag) const;
		
	void addConnection(bool flag, Connection *pc);
	void removeConnection(bool flag, Connection *pc);

	void activateConnection(bool flag, Connection *pc);
	void inactivateConnection(bool flag, Connection *pc);

	void adjustUp(bool flag, Connection *pc, unsigned long value);
	void adjustDown(bool flag, Connection *pc, unsigned long value);
	
	void reset();
	void reallocate();
	
	Connection *getMinConnection(bool flag);
	Connection *getMaxConnection(bool flag);
};

#endif

⌨️ 快捷键说明

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