📄 dnnode.h
字号:
/**********************************************************************
FileName : DnNode.h
Description : 下节点类头文件
Version : 1.0
Date : 2003年7月9日
Author : 刘荣辉
Other : 下属SP
***********************************************************************/
#ifndef _DNNODE_H_
#define _DNNODE_H_
#include <pthread.h>
#include "socket.h"
#include "FileOpr.h"
#include "DB_MySQL.h"
#include "ConnectionPool.h"
#include "md5.h"
#define MFXX "MFXX" //业务代码:免费信息
class CDnNode
{
public:
//构造、析构函数
CDnNode();
virtual ~CDnNode();
int NodeInit(); //初始化(队列参数)
int MakeRspPack(void *ReqPack, void **RspPack); //形成CMPP应答包,返回值为状态码
int DnSentQCheck(DB_MySQL *, int); //下端已发送队列检查模块????????
int GetSequence(); //互斥地获得当前流水号,并加1
int PutActiveTest(); //往发送队列中放ActiveTest包,不负责接收应答
int PutDeliver(void * , char *, int ); //往发送队列中放Deliver包
int LoadQueue(); //下节点数据装载恢复模块????????????????
int NodeExit(); //下节点安全退出模块(数据保护)????????????
public:
int ToExit; //节点退出标识,0为不退出,1为正在退出
int Num; //在下节点信息结构体数组(常驻内存)中的下标
TCPsocket TcpSock; //TCP套接字对象
int State; //节点状态:0表示连接正常,1表示正在建立连接,2表示连接已断
int SeqId; //流水号
int NodeID; //下节点的节点编号,与CP服务代码同
FIFO_RecvQ *RecvQ; //请求包接收缓冲队列
FIFO_RecvQ *RspQ; //应答包接收缓冲队列
FIFO_SendQ *SendQ; //发送缓冲队列
CIntStructMap SentQ; //已发送队列,等待应答/重发,滑动窗口
pthread_t SendThr;
pthread_mutex_t SentQ_Lock; //已发送队列互斥锁
pthread_mutex_t SeqId_Lock; //流水号互斥锁
FileOpr *WrSystemLog; //写系统日志文件(系统事件/连接事件/异常错误)的对象
int WaitTest; //已等待ActiveTest的时间
/*-----------在配置文件中获取的参数-----------*/
char ServiceCode[12]; //CP服务代码(接入号:638805),CGateWay::Console()中已假定其大于1000。
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,每个ServiceCode只能对应一个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路径
};
#endif //_DNNODE_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -