📄 sys_struct.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 + -