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

📄 cmpp_base.h

📁 中国移动长短信接收发送的网关系统工程源程序代码
💻 H
字号:
// CmppBase.h: interface for the CCmppBase20 class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CMPPBASE20_H__5E9BD189_C9CC_4963_A1B6_B8D60604460D__INCLUDED_)
#define AFX_CMPPBASE20_H__5E9BD189_C9CC_4963_A1B6_B8D60604460D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class cdatabuf;
typedef int (* ISendToUser )(char* data,int size);
/////////////////////CMPP Version 2.0///////////////////////////////

struct __declspec(dllexport) Query_Res //网关查询 
	{
		unsigned long mt_total_msg;   //从ICP接收的信息总数
		//unsigned long mt_total_user;  //从ICP接收的用户总数
		unsigned long mt_succ;        //成功转发数量
		unsigned long mt_wait;        //待转发数量
		unsigned long mt_fail;        //转发失败数量
		unsigned long mo_succ;        //向ICP成功送达数量
		unsigned long mo_wait;        //向ICP待送达数量
		unsigned long mo_fail;        //向ICP送达失败数量
	};

class __declspec(dllexport) CMPP_HEAD  
{
public:
	CMPP_HEAD();
	virtual ~CMPP_HEAD();
public:
	virtual int	 Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);

	int GetCommand();
	int GetSize();
	int GetSequenceId();
	int GetHeaderLen();
public:
	
	
	int	nTotalLength;
	int	nCommandId;
	int	nSequenceId;
};

class __declspec(dllexport) CMPP_CONNECT  : public CMPP_HEAD
{
public:
	CMPP_CONNECT();
	virtual ~CMPP_CONNECT();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	
	unsigned char sSourceAddr[6];
	unsigned char sAuthSource[16];
	unsigned char cVersion;
	int	 nTimeStamp;
};

class __declspec(dllexport) CMPP_CONNECT_RESP  : public CMPP_HEAD
{
public:
	CMPP_CONNECT_RESP();
	virtual ~CMPP_CONNECT_RESP();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	unsigned char cStatus;
	unsigned char sAuthIsmg[16];
	unsigned char cVersion;
};

class __declspec(dllexport) CMPP_SUBMIT : public CMPP_HEAD
{
public:
	CMPP_SUBMIT();
	virtual ~CMPP_SUBMIT();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	unsigned char	nMsgId[8];
	unsigned char	cPkTotal;
	unsigned char	cPkNumber;
	unsigned char	cRegisteredDelivery;
	unsigned char	cMsgLevel;
	unsigned char	sServiceId[10];
	unsigned char	cFeeUserType;
	unsigned char	nFeeTerminaleId[21];
	unsigned char	cTpPid;
	unsigned char	cTpUdhi;
	unsigned char	cMsgFmt;
	unsigned char	sMsgSrc[6];
	unsigned char	sFeeType[2];
	unsigned char	sFeeCode[6];
	unsigned char	sValidTime[17];
	unsigned char	sAtTime[17];
	unsigned char	sSrcId[21];
	unsigned char	cDestUsrTl;
	unsigned char	sDestTerminalId[21];
	unsigned char	cMsgLen;
	unsigned char	sMsgContent[140];
	unsigned char	sReserve[8];
};

class __declspec(dllexport) CMPP_SUBMIT_RESP  : public CMPP_HEAD
{
public:
	CMPP_SUBMIT_RESP();
	virtual ~CMPP_SUBMIT_RESP();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	
	unsigned char	nMsgId[8];
	unsigned char	cResult;

};

class __declspec(dllexport) CMPP_QUERY  : public CMPP_HEAD
{
public:
	CMPP_QUERY();
	virtual ~CMPP_QUERY();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	
	unsigned char	sTime[8];
	unsigned char	cQueryType;
	unsigned char	sQueryCode[10];
	unsigned char	sReserve[8];

};

class __declspec(dllexport) CMPP_QUERY_RESP  : public CMPP_HEAD
{
public:
	CMPP_QUERY_RESP();
	virtual ~CMPP_QUERY_RESP();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:

	unsigned char	sTime[8];
	unsigned char	cQueryType;
	unsigned char	sQueryCode[10];
	int				nMTTLMsg;
	int				nMTTlusr;
	int				nMTScs;
	int				nMTWT;
	int				nMTFL;
	int				nMOScs;
	int				nMOWT;
	int				nMOFL;
};

class __declspec(dllexport) CMPP_CANCEL  : public CMPP_HEAD
{
public:
	CMPP_CANCEL();
	virtual ~CMPP_CANCEL();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	unsigned char	nMsgId[8];
};

class __declspec(dllexport) CMPP_CANCEL_RESP  : public CMPP_HEAD
{
public:
	CMPP_CANCEL_RESP();
	virtual ~CMPP_CANCEL_RESP();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	
	unsigned char	cSuccessId;

};

class __declspec(dllexport) CMPP_DELIVER  : public CMPP_HEAD
{
public:
	CMPP_DELIVER();
	virtual ~CMPP_DELIVER();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:

	unsigned char	nMsgId[8];
	unsigned char	sDestId[21];
	unsigned char	sServiceId[10];
	unsigned char	cTpPid;
	unsigned char	cTpUdhi;
	unsigned char	cMsgFmt;
	unsigned char	sSrcTermId[21];
	unsigned char	cRegisteredDelivery;
	unsigned char	cMsgLen;
	unsigned char	sMsgContent[256];
	unsigned char	sReserve[8];

};

class __declspec(dllexport) CMPP_DELIVER_RESP  : public CMPP_HEAD
{
public:
	CMPP_DELIVER_RESP();
	virtual ~CMPP_DELIVER_RESP();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:

	unsigned char	nMsgId[8];
	unsigned char	cResult;
};

class __declspec(dllexport) CMPP_ACTIVE_RESP  : public CMPP_HEAD
{
public:
	CMPP_ACTIVE_RESP();
	virtual ~CMPP_ACTIVE_RESP();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	
	unsigned char	cReserved;

};


////////////////////////CMPP Version 3.0//////////////////////////////////////
class __declspec(dllexport) CMPP30_HEAD  
{
public:
	CMPP30_HEAD();
	virtual ~CMPP30_HEAD();
public:
	virtual int	 Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);

	int GetCommand();
	int GetSize();
	int GetSequenceId();
	int GetHeaderLen();
public:
	
	
	int	nTotalLength;
	int	nCommandId;
	int	nSequenceId;
};

class __declspec(dllexport) CMPP30_CONNECT  : public CMPP30_HEAD
{
public:
	CMPP30_CONNECT();
	virtual ~CMPP30_CONNECT();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	
	unsigned char sSourceAddr[6];
	unsigned char sAuthSource[16];
	unsigned char cVersion;
	int	 nTimeStamp;
};

class __declspec(dllexport) CMPP30_CONNECT_RESP  : public CMPP30_HEAD
{
public:
	CMPP30_CONNECT_RESP();
	virtual ~CMPP30_CONNECT_RESP();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	int nStatus;
	unsigned char sAuthIsmg[16];
	unsigned char cVersion;
};

class __declspec(dllexport) CMPP30_SUBMIT : public CMPP30_HEAD
{
public:
	CMPP30_SUBMIT();
	virtual ~CMPP30_SUBMIT();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	unsigned char	nMsgId[8];
	unsigned char	cPkTotal;
	unsigned char	cPkNumber;
	unsigned char	cRegisteredDelivery;
	unsigned char	cMsgLevel;
	unsigned char	sServiceId[10];
	unsigned char	cFeeUserType;
	unsigned char	nFeeTerminaleId[32];
	unsigned char	cSrcttype;
	unsigned char	cTpPid;
	unsigned char	cTpUdhi;
	unsigned char	cMsgFmt;
	unsigned char	sMsgSrc[6];
	unsigned char	sFeeType[2];
	unsigned char	sFeeCode[6];
	unsigned char	sValidTime[17];
	unsigned char	sAtTime[17];
	unsigned char	sSrcId[21];
	unsigned char	cDestUsrTl;
	unsigned char	sDestTerminalId[21];
	unsigned char	cDesttype;
	unsigned char	cMsgLen;
	unsigned char	sMsgContent[160];
	unsigned char	sReserve[20];
};

class __declspec(dllexport) CMPP30_SUBMIT_RESP  : public CMPP30_HEAD
{
public:
	CMPP30_SUBMIT_RESP();
	virtual ~CMPP30_SUBMIT_RESP();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	
	unsigned char	nMsgId[8];
	int	nResult;

};

class __declspec(dllexport) CMPP30_QUERY  : public CMPP30_HEAD
{
public:
	CMPP30_QUERY();
	virtual ~CMPP30_QUERY();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	
	unsigned char	sTime[8];
	unsigned char	cQueryType;
	unsigned char	sQueryCode[10];
	unsigned char	sReserve[8];

};

class __declspec(dllexport) CMPP30_QUERY_RESP  : public CMPP30_HEAD
{
public:
	CMPP30_QUERY_RESP();
	virtual ~CMPP30_QUERY_RESP();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:

	unsigned char	sTime[8];
	unsigned char	cQueryType;
	unsigned char	sQueryCode[10];
	unsigned char	nMTTLMsg;
	unsigned char	nMTTlusr;
	unsigned char	nMTScs;
	unsigned char	nMTWT;
	unsigned char	nMTFL;
	unsigned char	nMOScs;
	unsigned char	nMOWT;
	unsigned char	nMOFL;
};

class __declspec(dllexport) CMPP30_CANCEL  : public CMPP30_HEAD
{
public:
	CMPP30_CANCEL();
	virtual ~CMPP30_CANCEL();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	unsigned char	nMsgId[8];
};

class __declspec(dllexport) CMPP30_CANCEL_RESP  : public CMPP30_HEAD
{
public:
	CMPP30_CANCEL_RESP();
	virtual ~CMPP30_CANCEL_RESP();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	
	unsigned char	cSuccessId;

};

class __declspec(dllexport) CMPP30_DELIVER  : public CMPP30_HEAD
{
public:
	CMPP30_DELIVER();
	virtual ~CMPP30_DELIVER();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:

	unsigned char	nMsgId[8];
	unsigned char	sDestId[21];
	unsigned char	sServiceId[10];
	unsigned char	cTpPid;
	unsigned char	cTpUdhi;
	unsigned char	cMsgFmt;
	unsigned char	sSrcTermId[32];
	unsigned char	cSrctype;
	unsigned char	cRegisteredDelivery;
	unsigned char	cMsgLen;
	unsigned char	sMsgContent[200];
	unsigned char	sLinkID[20] ;
};

class __declspec(dllexport) CMPP30_ACTIVE_RESP  : public CMPP30_HEAD
{
public:
	CMPP30_ACTIVE_RESP();
	virtual ~CMPP30_ACTIVE_RESP();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	
	unsigned char	cReserved;

};

class __declspec(dllexport) CMPP_REPORT {
public:
	CMPP_REPORT();
	virtual ~CMPP_REPORT();
public:
	virtual int Encode(cdatabuf **pdata);
	virtual void Decode(cdatabuf *pdata);
public:
	unsigned char	nMsgId[8];
	unsigned char	sStat[7];
	unsigned char	sSubmitTime[10];
	unsigned char	sDoneTime[10];
	unsigned char	sDestTermId[21];
	int				nSMSCSeq;
};
//////////////////////////////////////////////////////////////////////////////

class __declspec(dllexport) CMSGResult  
{
public:
	CMSGResult();
	virtual ~CMSGResult();
	
	
	int		getErrFromMsgid(unsigned char* msgid);			//	获得消息ID的状态
	int		getNextErrMsgid(unsigned char* msgid);		//	获得下一个错误消息ID,及返回当前编号
	
//	int		getSerialArray(int *serial);			//	获得所有错误消息ID的编号数组
	int		getErrSerialArray(int *serial);			//	获得所有错误消息ID的编号数组

	int		getMsgidString(char** msgid);			//	获得所有消息ID字符串,并返回个数。
	int		getErrMsgidString(char** msgid);		//	获得所有出错消息ID字符串,并返回个数。

	void	moveFirst();							//	移动游标到最前位置
	void	moveLast();								//	移动游标到最后位置

	int		getCount();								//
	
	int		create(int n);
	void	release();

	void	setMsg(int index,CMPP_REPORT* report);
	void	setMsg(int index,char* msgcon,int len);
	void	setMsg(int index,unsigned char* msgid,unsigned char ret);

	void	getMsg(int index,char* stat);
	void	getMsg(int index,char* msgcon,int* len);
	void	getMsg(int index,unsigned char* msgid,unsigned char* ret);
public:
	void	restort_submit();
	void	restort_deliver();

private:	
	typedef struct {
		int seq;
		CMPP_SUBMIT_RESP resp;
		CMPP_REPORT	report;						//
		char *msgcon;
		int len;
	}MSG;	

public:
    CStringList* getErrSeqidArray();
	MSG	*msg;
	int UNGETRESP;									//  没有得到SUBMIT_RESP
	int SENDERR;									//	提交错误个数
	int UNGETDLV;									// 	没有得到状态报告 DELIVER

	/*Message State	Final Message States	Description
	DELIVERED	DELIVRD	Message is delivered to destination
	EXPIRED	EXPIRED	Message validity period has
	expired
	DELETED	DELETED	Message has been deleted.
	UNDELIVERABLE	UNDELIV	Message is undeliverable
	ACCEPTED	ACCEPTD	Message is in accepted state(i.e. has been manually read on behalf of the subscriber by customer service)
	UNKNOWN	UNKNOWN	Message is in invalid state
	REJECTED	REJECTD	Message is in a rejected state
	*/

	int DELIVRD;									//	
	int EXPIRED;									//
	int DELETED;
	int ACCEPTD;
	int UNKNOWN;
	int REJECTD;
	int UNDELIV;
	//	流水号
private:
	
	int cur_i;										//	当前游标位置
	int all;										//	总个数

};

class __declspec(dllexport) CHmMap
{
public:
	
	CHmMap();
	virtual ~CHmMap();

	int create(int n);
	int getCount();
	void release();

	CMSGResult* getItem(int index);
	
private:
	CMSGResult*	pRet;
	int			num;
};

#endif // !defined(AFX_CMPPBASE20_H__5E9BD189_C9CC_4963_A1B6_B8D60604460D__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -