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

📄 gateway.h.bak

📁 SMS gateway. SMS protocol for CHINA mobile, unicom, lingtong. Using mysql to exchange message.
💻 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 + -