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

📄 vlink.h

📁 模拟P2P各种网络环境的,适合新手们的学习,不错的源码.
💻 H
字号:
#ifndef _VLink_h
#define _VLink_h
#define protect protected

#include "Common.h"

class Node;
class Agent;
class VConnection;

class VLink
{
protect:
	Agent *mAgent;
	Node *mNode;
	unsigned long mBandwidthIn;
	unsigned long mAvailableBandwidthIn;
	unsigned long mBandwidthOut;
	unsigned long mAvailableBandwidthOut;
	set<VConnection *> mActiveConnectionIn;
	set<VConnection *> mInactiveConnectionIn;
	set<VConnection *> mActiveConnectionOut;
	set<VConnection *> mInactiveConnectionOut;

public:
	VLink(Agent *agent, Node *node);
		
	unsigned long getBandwidth(bool flag)
	{ if(flag) return mBandwidthIn; else return mBandwidthOut; }
	unsigned long getAvailableBandwidth(bool flag)
	{ if(flag) return mAvailableBandwidthIn; else return mAvailableBandwidthOut; }
	unsigned long getAverageBandwidth(bool flag)
	{
		if(flag)
			return mBandwidthIn / (mActiveConnectionIn.size() + 1);
		else
			return mBandwidthOut / (mActiveConnectionOut.size() + 1);
	}
	unsigned long getAverageBandwidthA(bool flag)
	{
		if(flag)
			return mBandwidthIn / mActiveConnectionIn.size();
		else
			return mBandwidthOut / mActiveConnectionOut.size();
	}	
	unsigned int getActiveNumber(bool flag)
	{ if(flag) return mActiveConnectionIn.size(); else return mActiveConnectionOut.size(); }


	void setBandwidth(bool flag, unsigned long bandwidth)
	{
		if(flag)
		{ mBandwidthIn = bandwidth; mAvailableBandwidthIn = bandwidth; }
		else
		{ mBandwidthOut = bandwidth; mAvailableBandwidthOut = bandwidth; }	
	}

	void reset();
	
	void addConnection(bool flag, VConnection *pc);
	void removeConnection(bool flag, VConnection *pc);
	
	void activateConnection(bool flag, VConnection *pc);
	void inactivateConnection(bool flag, VConnection *pc);

	void adjustUp(bool flag, VConnection *pc, unsigned long value);
	void adjustDown(bool flag, VConnection *pc, unsigned long value);

	void reallocate();

	VConnection *getMaxConnection(bool flag);
	set<VConnection *> getConnection(bool flag)
	{ if(flag) return mActiveConnectionIn; else return mActiveConnectionOut; }
};

#endif

⌨️ 快捷键说明

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