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

📄 intstructmap.h

📁 SMS gateway. SMS protocol for CHINA mobile, unicom, lingtong. Using mysql to exchange message.
💻 H
字号:
/**********************************************************************  FileName            : IntStructMap.h  Description         : 整数-指针哈希映射类头文件  Version             : 1.0  Date                : 2003年7月1日  Author              : 刘荣辉  Other               : 支持多线程的Map类,作为已发送队列(哈希表)***********************************************************************/#ifndef _IntStructMap_H_#define _IntStructMap_H_#include <map.h>	//STL的哈希映射类#include <semaphore.h>#include <stdio.h>typedef struct _SendQUnit  //发送队列单元结构体   {	 time_t SrcRecvTime;		//原始请求包接收时间	 int SrcNode;				//源节点编号     //unsigned int  SrcSequence; //原始请求包的流水号,若非转发包则填0	 char ID_Relate[10];		//关联的Msg_ID(以二进制方式存储)     time_t  SendTime;   //相当于long,4个字节,下一次被发送的时间(本次发送时间加超时等待时间)     char iResent; 	 //可发送次数,为-1表示为应答包(不需等应答,发送成功便不重发)	 //iResent=0,而且应答超时的时候,便从已发送队列中删除,并释放内存	 //char Protocol;		//待发包协议类型,0,CMPP; 1,SMGP; 2,SMPP	 int RelayTimes;	//已经尝试转发的次数(每次尝试都将iResent置为最大可发送次数)     char *Pack;     	 //待发送包指针   }SendQUnit;typedef map<unsigned int , SendQUnit> IntStructMap;//=======================类定义===========================class CIntStructMap{  public:  	CIntStructMap();  	~CIntStructMap();  	  	void Map_Init(int size);	//初始化窗口大小  	  	bool Add(unsigned int , SendQUnit);	//在队列中插入节点  	int  Delete(unsigned int);			//删除某个队列单元  	int  GetAllNode(SendQUnit *Nodes, int MaxNum);	//获取最多MaxNum个节点  	bool FindDel(unsigned int , SendQUnit *);	//获得某个节点后删除它	bool CIntStructMap::Clean(unsigned int);	//删除某队列单元并释放其中的包指针所指内存  	  	int  GetSize();		//获取队列当前大小  	int  GetMaxSize();	//获取队列最大容量  	bool IsFull();	//判断是否窗口已满	bool IsEmpty();	//判断是否窗口为空	  private:  	IntStructMap SentQ;	//哈希表  	int   MaxSize;		//窗口大小(表大小)  	sem_t WriteSem;		//窗口信号量,不允许超过窗口大小  	sem_t AddLock, DelLock;	//增,删锁,防止同时多个线程执行增或者同时执行删操作  };#endif //_IntStructMap_H_

⌨️ 快捷键说明

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