📄 datatype.h
字号:
/*************************************************************************** Copyright : 2001-2002, ASPIRE TECHNOLOGIES (SHENZHEN) LTD. Program ID : datatype.h Description : 公用数据说明文件 Version : CMPP API 1.5a Functions : 内部函数 Modification Log: DATE AUTHOR DESCRIPTION -------------------------------------------------------------------------- 11/25/2002 sunjun Create***************************************************************************/#ifndef _DATATYPE_H#define _DATATYPE_H#include "os.h"#include "cmppapi.h"#include "cmpplowapi.h" // 底层接口submit结构定义#include "cmppmutex.h" #include "cmppthread.h"#define MacShortLen sizeof(short)#define MacIntLen sizeof(int)#define MacCharLen sizeof(char)/* Macro of CMPP Command Id */#define MacC_ConnectRqst 0x00000001#define MacC_ConnectRep 0x80000001#define MacC_TerminateRqst 0x00000002#define MacC_TerminateRep 0x80000002#define MacC_DeliverRqst 0x00000005#define MacC_DeliverRep 0x80000005#define MacC_SubmitRqst 0x00000004#define MacC_SubmitRep 0x80000004#define MacC_QueryRqst 0x00000006#define MacC_QueryRep 0x80000006#define MacC_CancelRqst 0x00000007#define MacC_CancelRep 0x80000007#define MacC_ActiveRqst 0x00000008#define MacC_ActiveRep 0x80000008/* CMPP package body definition */#define MacHeadLen (MacIntLen + \ MacIntLen + \ MacIntLen)typedef struct _tagCmppHead { unsigned int unTotalLength; /* 消息总长度 */ unsigned int unCommandId; /* 消息命令 */ unsigned int unSequenceId; /* 消息流水号 */} recCmppHead;/* CMPP package body definition *//*CMPP Connect pack definition */#define MacSourceAddress 6#define MacAuthSource 16#define MacConnectLen (MacSourceAddress + \ MacAuthSource + \ MacCharLen + \ MacIntLen) typedef struct _tagCmppConnect { char chSourceAddr[MacSourceAddress+1]; /* 源地址 */ char chAuthSource[MacAuthSource+1]; /* 用于鉴别源地址(MD5)*/ unsigned char ucVersion; /* 版本号 */ unsigned int unTimestamp; /* 时间明文 */} recCmppConnect;/* CMPP Submit Resp pack definition */#define MacSubmitResLen (MacMsgId + \ MacIntLen) #define MacReceiptBodyLen (MacMsgId + \ MacRecStat + \ MacSubmitTime + \ MacDoneTime + \ MacDesTermId + \ MacIntLen) /* CMPP Deliver Resp pack definition */#define MacDeliverResLen (MacMsgId + MacIntLen) /* CMPP Connect resp pack definition */#define MacAuthIsmg 16#define MacConnectResLen (MacIntLen+ \ MacAuthIsmg + \ MacCharLen) typedef struct _tagCmppConnectResp { unsigned int unStatus; /* 状态 */ char chAuthIsmg[MacAuthIsmg+1]; /* ISMG认证码 */ unsigned char ucVersion; /* 版本号 */} recCmppConnectResp;/* CMPP Query pack definition */#define MacQueryTime 8#define MacQueryCode 10#define MacQueryLen (MacQueryTime + \ MacCharLen + \ MacQueryCode + \ MacReserve) typedef struct _tagCmppQuery { char chTime[MacQueryTime+1]; /* 时间 */ unsigned char ucQueryType; /* 查询类别 */ char chQueryCode[MacQueryCode+1];/* 查询代码 */ char chReserve[MacReserve+1]; /* 保留 */} recCmppQuery;/* CMPP Query Resp pack definition */#define MacQueryResLen (MacQueryTime + \ MacCharLen + \ MacQueryCode + \ MacIntLen + \ MacIntLen + \ MacIntLen + \ MacIntLen + \ MacIntLen + \ MacIntLen + \ MacIntLen + \ MacIntLen) typedef struct _tagCmppQueryResp { char chTime[MacQueryTime+1]; /* 时间 */ unsigned char ucQueryType; /* 查询类别 */ char chQueryCode[MacQueryCode+1]; /* 查询代码 */ unsigned int unMtTlMsg; /* 从SP接收的信息总数 */ unsigned int unMtTlUsr; /* 从SP接收的用户总数 */ unsigned int unMtScs; /* 成功数量 */ unsigned int unMtWt; /* 待转发数量 */ unsigned int unMtFl; /* 转发失败数量 */ unsigned int unMoScs; /* 向SP发送成功数量 */ unsigned int unMoWt; /* 向SP待发送数量 */ unsigned int unMoFl; /* 向SP发送失败数量 */} recCmppQueryResp;/* CMPP Cancel pack definition */#define MacCancelLen MacMsgIdtypedef struct _tagCmppCancel { unsigned char uchMsgId[MacMsgId+1]; /* 信息标识 */} recCmppCancel;/* CMPP Cancel Resp pack definition */#define MacCancelResLen MacIntLentypedef struct _tagCmppCancelResp { unsigned int unSuccessId; /* 成功标识 */} recCmppCancelResp;/* CMPP Active pack definition */#define MacActiveTestLen 0typedef struct _tagCmppActiveTest { /* 因为cc编译器不支持空结构,该字段不影响编解码 */ unsigned char uReserver;} recCmppActiveTest;/* CMPP Active Resp pack definition */#define MacActiveTestResLen MacCharLentypedef struct _tagCmppActiveTestResp { unsigned char ucReserver; /* 保留 */} recCmppActiveTestResp;/*CMPP Pack struct */typedef struct _tagCmppPck { recCmppHead rHead; union { recCmppConnect rCmppConnect; recCmppConnectResp rCmppConnectResp; recCmppSubmit rCmppSubmit; recCmppSubmitResp rCmppSubmitResp; recCmppQuery rCmppQuery; recCmppQueryResp rCmppQueryResp; recCmppDeliver rCmppDeliver; recCmppDeliverResp rCmppDeliverResp; recCmppCancel rCmppCancel; recCmppCancelResp rCmppCancelResp; recCmppActiveTest rCmppActiveTest; recCmppActiveTestResp rCmppActiveTestResp; } body;} recCmppPck;/* Submit pack Len */#define MacMaxSubmitLen (MacMsgId + \ MacCharLen + \ MacCharLen + \ MacCharLen + \ MacCharLen + \ MacServiceId + \ MacCharLen + \ MacFeeTermId + \ MacCharLen + \ MacCharLen + \ MacCharLen + \ MacCharLen + \ MacMsgSrc + \ MacFeeType + \ MacFeeCode + \ MacValidTime + \ MacAtTime + \ MacSrcId + \ MacCharLen + \ MacDesTermId + \ MacCharLen + \ MacCharLen + \ MacMsgLen + \ MacLinkId) #define MacMinSubmitLen (MacMaxSubmitLen - MacMsgLen)#define MacBasSubmitLen (MacMaxSubmitLen - MacMsgLen - MacLinkId) /* CMPP Deliver pack Len */#define MacMaxDeliverLen (MacMsgId + \ MacDstId + \ MacServiceId + \ MacCharLen + \ MacCharLen + \ MacCharLen + \ MacSrcTermId + \ MacCharLen + \ MacCharLen + \ MacCharLen + \ MacMsgLen + \ MacLinkId) #define MacMinDeliverLen (MacMaxDeliverLen - MacMsgLen)#define MacBasDeliverLen (MacMaxDeliverLen - MacMsgLen - MacLinkId) #define MAC_LEN_OF_SPID 6#define MAC_LEN_OF_SPPWD 32#define MAC_LEN_OF_IPADDR 40typedef enum _ESocketState /* 连接状态 */{ ConnectClose = 0, /* 连接关闭 */ ConnectOpen /* 连接OK */}ESocketState;typedef enum _ELoginState{ NoLogined = 0, /* 没有连接到服务器 */ Logined , /* LOGIN 上服务器 */ ReLogining, /* 在重新LOGIN */ ReLoginRequest, /* 要求重新LOGIN */ ReLoginFail /* 重新LOGIN失败 */}ELoginState;typedef enum _EBool{ True = 1, False = 0,#ifndef WIN32 TRUE = 1, FALSE = 0#endif}EBool;typedef struct _ConfigPara{ char sHostAddr[MAC_LEN_OF_IPADDR+1]; int nHostPort; char sSpID[MAC_LEN_OF_SPID+1]; char sSpPasswod[MAC_LEN_OF_SPPWD+1]; EBool bAutoDeliveryResponse; /* 是否自动回复delivery response */ int nSubmitTimeOut; /* submit的超时等待时间 */ recCmppSubmit rDefaultSubmitValue; int nVersion; int nActiveTimeval;}recCfgPara;#ifdef WIN32typedef struct _tagThreadEvent { RecMutex mutex_h; /* 锁 */ HANDLE cond_h; int* pbSended; /* 是否已经发送了事件 */}recEvent;#endif#if defined(_HPUX_SOURCE) || defined(_LINUX_SOURCE)typedef struct _tagThreadEvent { pthread_mutex_t mutex_h; pthread_cond_t cond_h; int* pbSended; // 是否已经发送了事件}recEvent;#endiftypedef struct _BufFd{ void* pvBufPtr; /* 缓冲指针 */ RecMutex BufLock; /* 缓冲锁 */ EBool bBlock; /* 是否BLOCK */ recEvent BufEvent; /* 缓冲事件 */}recBufFd; #define NO_INIT 0 // 没有初始化#define YES_INIT 1 // 已经初始化 typedef struct _tagConnDesc { int nInitFlag; /* 是否初始化的标志 */ int nConnFd; /* 连接句柄 */ int nSequence; /* 请求包的序列号 */ RecMutex rMutex; /* 用于对序列号的多线程安全*/ int nTimeout; /* 超时时间 */ ESocketState eSocketStatus; /* 连接状态 */ ELoginState eLoginStatus; /* 登陆状态 */ recBufFd rSendBufFd; /* 发送缓冲队列句柄 */ recBufFd rDeliverBufFd; /* 回执、普通MO缓冲队列句柄 */ recBufFd rSeqBufFd; /* 接收的SEUQNCE表句柄 */ API_THREAD_HANDLE SendThreadHandle; /* 发送线程句柄 */ API_THREAD_HANDLE RecvThreadHandle; /* 接收线程句柄 */ EBool bThreadExit; recCfgPara rCfgPara; /* 配置参数 */ }recConnDesc;/*---------------------------------------------------------------------------*//*---------------------------------------------------------------------------*//* * 描述:打印详细错误描述 * (到标准输出和错误输出) * 输入:无 * 输出:无 * 返回值:无 */void vPrintErrorDetail( );/* *描述:设置Query包结构 *输入:const char *sTime const unsigned char ucQueryType const char *sQueryCode const char *sReserve *输出:recCmppQuery *srCmppQuery *返回值:API_OK 成功 * 其它 失败 */int nSetQueryValue(recCmppQuery *prCmppQuery, const char *sTime, const unsigned char ucQueryType, const char *sQueryCode, const char *sReserve );/* *描述:(1) 发送Query请求 (2) 接收Query响应 *输入:CONNFD connDesc 连接句柄 recCmppQuery * prCmppQuery, *输出:recCmppQueryResp * prCmppQueryResp *返回值:API_OK 成功 * 其它 失败 */ int nQuery( CONNFD connDesc, recCmppQuery * prCmppQuery, recCmppQueryResp * prCmppQueryResp );/* *描述:设置Cancel包结构 *输入:const unsigned char *pMsgId *输出:recCmppCancel *prCmppCancel *返回值:API_OK 成功 * 其它 失败 */int nSetCancelValue( recCmppCancel *prCmppCancel, const unsigned char *pMsgId );/* *描述:(1) 发送Cancel请求 (2) 接收Cancel响应 *输入:CONNFD connDesc 连接句柄 recCmppCancel * prCmppCancel, *输出:recCmppCancelResp *prCmppCancelResp *返回值:API_OK 成功 * 其它 失败 */int nCancel( CONNFD connDesc, recCmppCancel * prCmppCancel, recCmppCancelResp *prCmppCancelResp );/*---------------------------------------------------------------------------*/ #endif //end of _DATATYPE_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -