?? 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 + -