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

📄 sys_struct.h

📁 SMS gateway. SMS protocol for CHINA mobile, unicom, lingtong. Using mysql to exchange message.
💻 H
字号:
/**********************************************************************  FileName            : sys_struct.h  Description         : 系统结构体头文件  Version             : 1.0  Date                : 2003年6月12日  Author              : 刘荣辉  Other               : ***********************************************************************/#ifndef _SYS_STRUCT_H_#define _SYS_STRUCT_H_#include <map.h>	//STL的哈希映射类#include "IntStructMap.h"#include "IntPointMap.h"#include "FIFOQueue.h"#include "cmpp_proto.h"#include "smgp_proto.h"#include "sharefunc.h"//#define HEAD_LEN  12		//SMGP,CMPP包头长度//#define SMPP_HEAD_LEN  16	//SMPP包头长度#define DEBUG	1 //调试状态标识#define LOG_DB	2	 //转发记录存储方式,0为写日志文件,1为存数据库,2为同时写日志文件和数据库#define SYS_EVENT_LEN	200	//系统事件描述字符串长度#define CPCODE_LEN		6	//CP服务代码(接入号)的长度(各CP都要相同!!!!!!)#define MAX_MTROUTE 500		//每次从数据库的MT路由表中提取的记录数#define MT_SEGMENT_LEN 7	//MT路由表中的号段码的长度,如"1350302"的长度为7#define CMPP_PROTOCOL 0		//协议类型标识#define SMGP_PROTOCOL 1#define SGIP_PROTOCOL 2#define SMPP_PROTOCOL 3//--------写转发记录缓冲表的原因--------#define NOT_ONLINE		-1	//目的节点未曾连接#define CONN_ABNORMAL	-2	//目的节点连接不正常#define SENDQ_FULL		-3	//目的节点发送队列已满#define WAIT_TIMEOUT	-4	//等待应答包超时//------传递给文件处理类FileOpr的约定参数--------#define SYSTEMLOG			0	//系统日志(字符串)#define CMPP_DELIVER_LOG	1	//上端CMPP_Deliver接收日志文件#define CMPP_REPORT_LOG		2	//上端CMPP_Report接收日志文件#define CMPP_SUBMIT_LOG		3	//下端CMPP_Submit接收日志文件#define SMGP_DELIVER_LOG	11	//上端SMGP_Deliver接收日志文件#define SMGP_REPORT_LOG		12	//上端SMGP_Report接收日志文件//#define SMGP_SUBMIT_LOG	13	//下端SMGP_Submit接收日志文件//------传递给数据库操作类的约定参数???--------//#define CMPP_MO_LOG		4	//CMPP_Deliver转发日志表//#define CMPP_MT_LOG		5	//CMPP_Submit转发日志表//#define SMGP_MO_LOG		14	//SMGP_Deliver转发日志表//#define SMGP_MT_LOG		15	//SMGP_Submit转发日志表#define TAB_CMPP_MO		"CMPP_MO_Log"	//CMPP_Deliver上行转发日志表名#define TAB_SMGP_MO		"SMGP_MT_Log"	//SMGP_Deliver上行转发日志表名#define TAB_CMPP_MT		"CMPP_MT_Log"	//CMPP_Submit下行转发日志表#define TAB_MO_Queue	"MO_Queue"	//上行转发记录缓存表名#define TAB_MT_Queue	"MT_Queue"	//下行转发记录缓存表名//=====================系统结构体=======================typedef struct _ThreadParam	//线程参数结构体{	void * MyPointer;	int  MyInt;	}ThreadParam;typedef struct _ThreadParam3	//线程参数结构体{	void * MyPointer;	int  MyInt;	//char MyChar[20];	struct sockaddr_in ClientIp;}ThreadParam3;typedef struct _RecvQUnit	//接收队列单元结构体  {     time_t RecvTime;		//收包时间	 long long MsgId_Echo;	//返回给下节点的Submit_Rsp中的MsgID     char *Pack;			//所收包指针  }RecvQUnit;/*//改在IntStructMap.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;*///=========================原始接收日志结构体========================//每个上节点的原始接收日志存在各自的文件夹,每天生成一个Deliver日志文件和Report日志文件//下节点每天一个文件夹,每个节点对应一个Submit日志文件typedef struct	//上节点Cmpp_Deliver接收日志结构体(包括report){	char RecvTime[15];			//接收时间	int	 SrcNode;				//源上节点编号	//unsigned char Result;		//应答码	CMPP_Deliver   *Deliver;}Cmpp_Deliver_Log;typedef struct	//上节点Smgp_Deliver接收日志结构体(包括report){	char RecvTime[15];			//接收时间	int	 SrcNode;				//源上节点编号	//unsigned char Result;		//应答码	SMGP_Deliver   *Deliver;}Smgp_Deliver_Log;typedef struct	//下节点Cmpp_Submit接收日志结构体{	char RecvTime[15];			//接收时间	int	 SrcNode;				//源下节点编号	long long MsgId_Echo;		//返回给下节点的Submit_Rsp中的MsgID	//unsigned char Result;		//应答码	CMPP_Submit   *Submit;}Cmpp_Submit_Log;//=========================转发日志(表)结构体========================//以下结构体对应成功转发日志文件(或数据表),和转发失败日志文件(或数据表)//每天对转发日志表进行数据导出备份(每天生成一个转发日志文件)typedef struct _Cmpp_MO_Log		//CMPP_Deliver上行转发记录结构体{	int  Id;					//从MO_Queue中获取的记录Id	char SrcRecvTime[15];		//原始请求包接收时间	int	 SrcNode;				//源网关代码	//unsigned int SrcSequence;	//原始请求包的流水号,若非转发包则填0	long long SrcMsgId;			//收到的CMPP_Deliver包的MsgId	int  DestNode;				//目的下节点编号	char SentTime[15];			//成功转发时间(收到正确Deliver_Rsp的时间),或下次转发的时间	unsigned char Result;		//错误码(要写表的原因),写转发记录缓存表时才需要	int RelayTimes;				//已经尝试转发的次数	CMPP_Deliver *Deliver;}Cmpp_MO_Log;typedef struct _Cmpp_MT_Log		//CMPP_Submit下行转发记录结构体{	int  Id;					//从MT_Queue中获取的记录Id	char SrcRecvTime[15];		//原始请求包接收时间	int	 SrcNode;				//源节点编号(SP_Id或网关代码)	//unsigned int  SrcSequence;	//原始请求包的流水号,若非转发包则填0	long long MsgId_Echo;		//返回给CP的CMPP_Submit_Rsp包的中的MsgId	int  DestNode;				//目的上节点编号	char SentTime[15];			//成功转发时间(收到正确Deliver_Rsp的时间),或下次转发的时间	unsigned char Result;		//错误码(要写表的原因),写转发记录缓存表才需要	int RelayTimes;				//已经尝试转发的次数	CMPP_Submit *Submit;}Cmpp_MT_Log;typedef struct _Smgp_MT_Log		//SMGP_Submit下行转发记录结构体{	int  Id;					//从MT_Queue中获取的记录Id	char SrcRecvTime[15];		//原始请求包接收时间	int	 SrcNode;				//源节点编号(SP_Id)	//unsigned int  SrcSequence;	//原始请求包的流水号,若非转发包则填0,以便建立数据库表间的对应关系	long long MsgId_Echo;		//返回给CP的CMPP_Submit_Rsp包的中的MsgId	int  DestNode;				//目的上节点编号	char SentTime[15];			//成功转发时间(收到正确Deliver_Rsp的时间),或下次转发的时间	char MsgId[21];				//SMGP_SubmitRsp中的消息编号(十六进制字符串),以便与Report对应	unsigned char Result;		//错误码(要写表的原因),写转发记录缓存表才需要	int RelayTimes;				//已经尝试转发的次数	SMGP_Submit   *Submit;}Smgp_MT_Log;//=================================================//CP信息结构体typedef struct{	 char ServiceCode[12];	//CP服务代码(接入号:638805)	 char ServiceID[12];	//业务代码,如"MFXX"	 char ServiceName[17];	//业务名,如"对对配"	 int  CPID;				//业务所属的CP编号	 int  InterfaceType;	//CP的接入方式,0-CMPP,1-HTTP,2-数据表(本地业务接入时)	 char MOTable[20];	//本地业务的MO接口表名	 char NodeIp[16];	//CP的接入服务器IP,每个CPCode只能对应一个IP	 char Username[16];	//Http连接时的用户名	 char Secret[20];	//CP的登陆密码	 int  WantReport;	//是否需要状态报告	 int  TestTime;		//发送ActiveTest请求的周期(秒)	 int  RecvQ_Size;	//CP收、发队列大小(缓存数据包的最大数目)	 int  SendQ_Size;	 int  SentW_Size;	//CP(已发送)滑动窗口大小	 char FeeType[3];	//收费类别	 char FeeCode[7];	//资费代码	 int  Encoding;		//MO的消息编码	 int  ShowLog;		//CP的日志显示标识	 char Seperator[5];	//MO信息内容的分隔符	 char URL[200];		//HTTP方式的Post路径	 //--------------以上信息从数据库获取----------------	 int  Socket;	//CMPP方式的通信连接套接字	 //int  State;	//节点状态}CP_Info;//MT路由信息结构体typedef struct{	int PhoneSeg;	//号码段,号码长度固定为7位,如"1350302"表示号码段"13503020000--13503029999"	int UpNodeID;	//上节点编号}MtRouteInfo;//=================================================typedef FIFOQueue<RecvQUnit> FIFO_RecvQ;	//接收队列typedef FIFOQueue<SendQUnit> FIFO_SendQ;	//发送队列typedef map<long long , int> IntIntMap;#endif //_SYS_STRUCT_H_

⌨️ 快捷键说明

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