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

📄 chttpdatams.h

📁 这是cdma2000的一个分组调度算法实例
💻 H
字号:
#if !defined(_CHTTPDATAMS_H_INCLUDED_)
#define _CHTTPDATAMS_H_INCLUDED_

#include<iostream.h>
#include "Afxtempl.h"
#include "systemsim.h"
#include "sys_random.h"
#include "CDataMs.h"

///////////////////////////////////////////////////////
//
//
//  2001/03/18    Authorized By Dou Zhongzhao
//
//
//   Revised on 2001/05/30
//   
//   修改的原因:为了完善与CDataMs的接口,增加了packet到达消息队列
//   具体操作:
//   1.在CDataMs中加了结构体PACKETARRIVALMESSAGE_TYPE,因为CHttpDataMs是
//      CDataMs的派生类,所以可以直接引用。
//   2.改动了PacketCallProcess()函数,具体请见程序。
//   3.在每一个pacektcall开始时,都要将packet的号置零。
//   4.将有关packetcall吞吐量的计算函数的有关内容去掉,改为在CDataMs中计算
//
//
//
//
///////////////////////////////////////////////////////   



class CHttpDataMs:public CDataMs
{
  //-------attribute---------
private:
	float m_fAlpha;
	float m_fK;
	int   m_iMaxDataBitsNum;
	int   m_iPacketSize;                  //packet的大小
	int   m_iPacketCallSize;			  //当前packet call的大小
	int   m_iPacketNumInPacketCall;       //当前packet call中packet的数量
	int   m_iPacketGeneratedNum;		  //已经生成的packet的数量
	int   m_iTimeBeforeNextPacket;	      //模拟分组间的时间间隔,以时隙为单位
	                        //距下一个packet的剩余时间
	long  m_lTimeBeforeNextPacketCall;  //模拟paket call间的时间间隔,以时隙为单位
	                        //距下一个packet call的剩余时间
	bool  m_bIsInPacketCall;			  //TRUE表示存在packet call
                            //是否有packet call存在
	//新加的变量
	float m_fPacketIntervalParameter;     //packet 间隔服从均值为m_fPacketIntervalParameter的几何分布
	float m_fPacketCallIntervalParameter;//packet call间隔的均值,作为Geometry分布的参数
	//--------operation--------
public:
	CHttpDataMs(){}
	~CHttpDataMs(){}
	

	//初始化函数:
	void HttpInitialization();			  //初始化业务模型函数,并调用下述函数,完成一个packet call的设置
    //packet call size生成函数:
	void PacketCallSizeGenerator();       //Pareto with cut-off生成packet call数据量
	//packet数量生成函数:
	void PacketNumGenerator();            //根据packet call的数据量和packet的大小计算packet的数量
	//packet间隔计算函数:
	void PacketIntervalGenerator();       //产生packet的时间间隔
	//packet生成函数:
	void PacketGenerator();				  //向数据队列中加入一个packet的数据量,同时生成新的packet的时间间隔,
										  //并把已生成的packet数量加1
	//判断是否有packet到达的函数:
	bool IsPacketCallover();              //比较packet call中的分组数与已生成的分组数,若相等,
										  //把packet call传输标志置为假,并生成packet call间隔时间
	//packet call间隔时间生成函数:
	void PacketCallIntervalGenerator();   //生成packet call的间隔时间
	//packet call处理函数:
	void PacketCallProcess();			  //首先判断是否有packet call在传输,若无则把packet call的间隔时间递减,
										  //并判断是否到时,若到时,则重新生成packet call。
	                                      //若有,则调用packet生成函数,生成新的packet
    //packet call是否到达的判断函数:
	void NewPacketCallSetup();			  //重新设置packet的数量,并生成第一个packet

};

#endif

⌨️ 快捷键说明

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