📄 gateway.h.bak
字号:
/********************************************************************** FileName : GateWay.h Description : 网关系统头文件 Version : 1.0 Date : 2003年6月12日 Author : 刘荣辉 Other : ***********************************************************************/#ifndef _REENTRANT#define _REENTRANT#endif#ifndef _GATEWAY_H_#define _GATEWAY_H_#include <sys/signal.h> //#include <signal.h>#include <unistd.h>#include <sched.h> #include <errno.h>#include <sys/types.h>#include <stdlib.h>#include <math.h>#include <map.h> //STL的哈希映射类#include "UpNode.h"#include "DnNode.h"//#include "SMGP_DB_Sybase.h"#define INIFILE "../config/GateWay.ini" /*系统配置文件名*/#define UPNODE_NUM 1 //上端节点(上级网关)的数量#define MAX_DNNODE 100 //最大下节点数#define MAX_RELAYTIMES 3 //最大转发尝试次数(每次转发都可能会尝试重发)#define CHECK_Q_TIME 2 //检查队列间隔时间(秒),应小于所有的ActiveTest_Timestatic pthread_key_t ThreadKey; //线程TSD键class CGateWay{ public: CGateWay(); virtual ~CGateWay(); static void InitAsDaemon(); static void * Up_SentQ_Poller(void *); //上端已发送队列定时(轮询)线程函数 static void * Up_RecvQ_Poller(void *); //上端接收队列轮询/调度处理线程 static void * MTForword(void *); //上端短消息分发线程 static void * DnListener(void *); //下端连接监听线程 static void * DnNodeLogin(void *); //下端登录验证线程模块 static void * DnReceiver(void *); //下端接收线程(所有下节点共用) int DnSender(void * ); //下节点发送(线程)模块 static void * Dn_SentQ_Poller(void *); //下端已发送队列定时(轮询)线程函数 static void * Dn_RecvQ_Poller(void *); //下端接收队列轮询/调度处理线程 static void * MOForword(void *pGateway);//从数据库中提取MO短消息分发给各个下节点 void * UpPackDeal(RecvQUnit *,int); //上端收到的包的路由处理(线程)模块 int UpCMPPDeal(RecvQUnit *,int); //上端收到的CMPP包的路由处理模块 int UpSMGPDeal(RecvQUnit *,int); //上端收到的SMGP包的路由处理模块 void * DnCMPPDeal(RecvQUnit *, CDnNode *); //下端收到的CMPP包的路由处理(线程)函数 long long GetMsgId(); //互斥获取下节点共用的MsgID值 int GetParam(); //从INIFILE中读取参数值 int Initialize(); //初始化函数(全局的文件/数据库等对象初始化) static void * Console(void * ); //网关控制台线程函数 static void ExitSig(int); //网关系统退出信号处理函数 static void SetTSD(int); //信号处理函数,修改线程私有数据 void SafeExit(); //网关系统安全退出模块 public: static int ToExit; //网关退出标识,0为不退出,1为正在退出 CUpNode UpNode[UPNODE_NUM]; //定义上端节点 CP_Info CP_Array[MAX_DNNODE]; //下节点信息结构体数组 CIntPointMap Code_CP_Map; //服务代码--下节点对象指针映射表 CIntPointMap Sock_CP_Map; //套接字--下节点对象指针映射表 IntIntMap MtRoute_Map; //号段--网关ID的路由映射表 FileOpr *WrSystemLog; //写系统日志文件(系统事件/连接事件/异常错误)的对象 FileOpr *WrDnSubmitLog; //下端Submit接收日志 ConnectionPool *ConnPool; //连接池 DB_MySQL *MyDB; //Mysql数据库的连接 DB_MySQL *MtDB; //Mysql数据库的连接 DB_MySQL *MoDB; //Mysql数据库的连接 //SMGP_DB_Sybase *SybaseDB; int DnNodeNum; //已导入内存的下节点信息结构体数量 long long MsgID_Echo; //返回给所有下节点的Submit_Rsp中的MsgID值 pthread_mutex_t MsgID_Lock; //返回给所有下节点的MsgID_Echo的修改锁 TCPsocket *DnSock; //监听下节点连接的TCP套接字对象 fd_set DnSockSet; //下端连接套接字集 int MaxSock; //Select()中的参数,最大套接字值加一 pthread_mutex_t SockSetLock; //下端连接套接字集的修改锁 //-----------将在系统配置文件中获取的信息参数----------- char SystemLogFile[80]; //系统日志文件名(含相对路径) char DnSubmitLogFile[80]; //下端CMPP_Submit包接收日志文件名 char GWCode[20]; //本代理网关节点代码 char GWIp[16]; //本代理网关IP int GWPort; //本代理网关监听下节点连接的端口号 int AdminPort; //本代理网关监听远程管理连接的端口号 char AdminUser[30]; //本代理网关的远程管理用户名 char AdminPass[30]; //本代理网关的远程管理密码 char DB_ConfigFile[50]; //数据库连接配置文件路径名 char UpNode_IniFile[UPNODE_NUM][80]; //上节点的配置文件名 char DnQueueBak[50]; //下节点队列数据包备份文件目录 char DnRecvQ_File[50]; //下节点队列中的数据包备份文件名后缀 char DnSendQ_File[50]; //-----------将在系统配置文件中获取的性能参数----------- int Sel_Timeout; //对下节点套接字集select的阻塞超时时间(微秒) int RecvQ_Empty_Wait; //所有上节点的接收队列为空时的等待延时(微秒) int SendQ_Empty_Wait; //下节点发送队列为空时的等待延时(微秒) int MT_DB_Interval; //MT短消息分发线程读数据库周期(微秒) int MO_DB_Interval; //MO短消息分发线程读数据库周期(微秒) int Max_MO_Fetch; //从数据库提取MO记录的最大数量 int Max_MT_Fetch; //从数据库提取MT记录的最大数量 int Max_RelayTimes; //最大转发尝试次数(每次转发都可能会尝试重发) int Relay_Interval; //转发失败后的重试延时(秒) //================其他全局变量======================== pthread_t MainThr; //网关主线程号 pthread_t UpSentQ_PollThr; //上端定时(轮询)线程号 pthread_t UpRecvQ_PollThr; //上端定时(轮询)线程号 pthread_t MTForwordThr; //数据库中的MT短消息分发线程号 pthread_t MOForwordThr; //数据库中的MO短消息分发线程号 pthread_t DnListenThr; //下端连接监听线程号 pthread_t DnRecvThr; //下端接收线程号 pthread_t DnSentQ_PollThr; //下端已发送队列定时(轮询)线程 pthread_t DnRecvQ_PollThr; //下端接收队列轮询/调度处理线程号 pthread_t ConsoleThr; //控制台线程号 //static pthread_key_t ThreadKey; //线程TSD键 //CThreadPool UpMOWorker; //上端MO处理线程池 //CThreadPool DnMTWorker; //下端MT处理线程池 };#endif //_GATEWAY_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -