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

📄 datatype.h

📁 用c/c++实现的一个CMPP API
💻 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 + -