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

📄 psgip.h

📁 手机开发环境BREW实例
💻 H
📖 第 1 页 / 共 2 页
字号:
// PSgip.h : Declaration of the CPSgip

#ifndef __PSGIP_H_
#define __PSGIP_H_

#include "resource.h"       // main symbols
#include "SgipCP.h"
#include <Winsock2.h>
#include "FileRecorder.h"
#include "Queue.h"

#define	MAX_TIMEOUT					60000000//us

#define ERROR_NOT					0
#define ERROR_WS_STARTUP_FAIL		ERROR_NOT - 1
#define ERROR_WS_INVALID_SOCKET		ERROR_NOT - 2
#define ERROR_WS_SET_FAIL			ERROR_NOT - 3
#define ERROR_WS_SEND_TIMEOUT		ERROR_NOT - 4
#define ERROR_WS_SEND_FAIL			ERROR_NOT - 5
#define ERROR_WS_RECV_TIMEOUT		ERROR_NOT - 6
#define ERROR_WS_RECV_FAIL			ERROR_NOT - 7
#define ERROR_WS_BIND_FAIL			ERROR_NOT - 8
#define ERROR_WS_LISTEN_FAIL		ERROR_NOT - 9
#define ERROR_WS_UNABLE_RESOLVE		ERROR_NOT - 10

#define ERROR_ALREADY_INIT			ERROR_NOT + 1
#define ERROR_INIT_FAIL				ERROR_NOT + 2
#define ERROR_INVALID_IP_ADDRESS	ERROR_NOT + 3
#define ERROR_ALREADY_BIND			ERROR_NOT + 4
#define ERROR_BIND_FAIL				ERROR_NOT + 5
#define ERROR_SUBMIT_FAIL			ERROR_NOT + 6
#define ERROR_BUFFER_FULL			ERROR_NOT + 7
#define ERROR_IS_BINDING			ERROR_NOT + 8

#define	FLAG_BUFFER_VALID			0
#define	FLAG_BUFFER_PENDING			1
#define	FLAG_BUFFER_READY			2
#define	FLAG_BUFFER_SENDED			3
#define	FLAG_BUFFER_RETRY			4

#define	MAX_BUFFER_SIZE				32
#define	MAX_DEST_USR				100
#define	MAX_LEN_MOBILE_ID			20
#define	MAX_BUFFER_LEN_MOBILE_ID	MAX_DEST_USR * (MAX_LEN_MOBILE_ID + 1)
#define	MAX_LEN_CONTENT				160									//0:158,o:138
#define	MAX_BUFFER_LEN_CONTENT		MAX_LEN_CONTENT * MAX_BUFFER_SIZE
#ifndef BZERO
	#define BZERO(buf)				memset(&(buf), 0, sizeof(buf))
#endif

#define	SGIP_PORT					8801
#define SGIP_THREAD4SGIPACCEPT_INTER_TIME	100 //Thread4SGIPAccept线程的间隔时间(毫秒)

//Both 消息类型包括:
#define	SGIP_BIND							0x00000001
#define	SGIP_BIND_REP						0x80000001
#define	SGIP_UNBIND							0x00000002
#define	SGIP_UNBIND_REP						0x80000002
#define	SGIP_SUBMIT							0x00000003
#define	SGIP_SUBMIT_REP						0x80000003
#define	SGIP_DELIVER						0x00000004
#define	SGIP_DELIVER_REP					0x80000004
#define	SGIP_REPORT							0x00000005
#define	SGIP_REPORT_REP						0x80000005

#define	SGIP_CHECKUSER						0x00000010
#define	SGIP_CHECKUSER_REP					0x80000010
#define	SGIP_USERRPT						0x00000011
#define	SGIP_USERRPT_REP					0x80000011
#define	SGIP_TRACE							0x00001000
#define	SGIP_TRACE_REP						0x80001000

#define	SGIP_MAX_LEN_USERNAME	16
#define	SGIP_MAX_LEN_PASSWORD	16

	struct _SGIP_MSG_ID
	{
		DWORD	dwSPID;
		DWORD	dwTime;
		DWORD	dwSequenceNO;						//消息流水号,顺序累加,步长为1,循环使用,范围:01h-07fffffffh
	};

	struct _SGIP_HEAD
	{
		DWORD	dwCommandLength;						//消息总长度(含消息头及消息体)
		DWORD	dwCommandID;							//命令或响应类型
		_SGIP_MSG_ID	sMsgID;
	};

	struct _SGIP_BIND
	{
		BYTE	bLoginType;
		char	szLoginName[SGIP_MAX_LEN_USERNAME];
		char	szPassword[SGIP_MAX_LEN_PASSWORD];
		BYTE	bReserve[8];
	};

	struct _SGIP_BIND_REP
	{
		BYTE	bResult;
		BYTE	bReserve[8];
	};

	struct _SGIP_UNBIND
	{
		//Null
	};

	struct _SGIP_UNBIND_REP
	{
		//Null
	};

	struct _SGIP_SUBMIT
	{
		char	szSPNumber[MAX_LEN_MOBILE_ID + 1];
		char	szChargeNumber[MAX_LEN_MOBILE_ID + 1];
		BYTE	bUserCount;
		char	szUserNumber[(MAX_LEN_MOBILE_ID + 1) * MAX_DEST_USR];

		char	szCorpID[5];
		char	szServiceType[10];						//业务类型
		BYTE	bFeeType;
		char	szFeeValue[6];
		char	szGivenValue[6];
		BYTE	bAgentFlag;
		BYTE	bMoreLateToMTFlag;
		BYTE	bPriority;								//0~9
		char	szExpireTime[16];						//存活有效期,格式遵循SGIP3.3协议
		char	szScheduleTime[16];						//定时发送时间,格式遵循SGIP3.3协议
		BYTE	bReportFlag;							//状态报告标志(0:出错时返回报告,1--需要,2--不需要,3)
		BYTE	bTPpid;
		BYTE	bTPudhi;
		BYTE	bMessageCoding;
		BYTE	bMessageType;
		DWORD	dwMessageLength;
		BYTE	bMessageContent[MAX_BUFFER_LEN_CONTENT + 1];
		BYTE	bReserve[8];
	};

	struct _SGIP_SUBMIT_REP
	{
		BYTE	bResult;
		BYTE	bReserve[8];
	};

	struct _SGIP_DELIVER
	{
		char	szUserNumber[MAX_LEN_MOBILE_ID + 1];
		char	szSPNumber[MAX_LEN_MOBILE_ID + 1];
		BYTE	bTP_pid;
		BYTE	bTP_udhi;
		BYTE	bMessageCoding;
		DWORD	dwMessageLength;
		BYTE	bMessageContent[MAX_BUFFER_LEN_CONTENT + 1];
		BYTE	bReserve[8];
	};

	struct _SGIP_DELIVER_REP
	{
		BYTE	bResult;
		BYTE	bReserve[8];
	};

	struct _SGIP_REPORT
	{
		_SGIP_MSG_ID	sMsgID4Submit;
		BYTE	bReportType;
		char	szUserNumber[MAX_LEN_MOBILE_ID + 1];
		BYTE	bState;
		BYTE	bErrorCode;
		BYTE	bReserve[8];
	};

	struct _SGIP_REPORT_REP
	{
		BYTE	bResult;
		BYTE	bReserve[8];
	};

	struct _SGIP_USERRPT
	{
		char	szSPNumber[MAX_LEN_MOBILE_ID + 1];
		char	szUserNumber[MAX_LEN_MOBILE_ID + 1];
		BYTE	bUserCondition;
		BYTE	bReserve[8];
	};

	struct _SGIP_USERRPT_REP
	{
		BYTE	bResult;
		BYTE	bReserve[8];
	};

	struct _SGIP_TRACE
	{
		_SGIP_MSG_ID	sMsgID4Submit;
		char	szUserNumber[MAX_LEN_MOBILE_ID + 1];
		BYTE	bReserve[8];
	};

	struct _SGIP_TRACE_NODE
	{
		BYTE	bResult;
		char	szNodeID[6];
		char	szReceiveTime[16];
		char	szSendTime[16];
		BYTE	bReserve[8];
	};

	struct _SGIP_TRACE_REP
	{
		BYTE	bCount;
		_SGIP_TRACE_NODE	sNode[255];
	};

	union _SGIP_BODY
	{
		struct	_SGIP_BIND					sMessageBind;
		struct	_SGIP_BIND_REP				sMessageBindRep;
		struct	_SGIP_UNBIND				sMessageUnbind;
		struct	_SGIP_UNBIND_REP			sMessageUnbindRep;
		struct	_SGIP_SUBMIT				sMessageSubmit;
		struct	_SGIP_SUBMIT_REP			sMessageSubmitRep;
		struct	_SGIP_DELIVER				sMessageDeliver;
		struct	_SGIP_DELIVER_REP			sMessageDeliverRep;
		struct	_SGIP_REPORT				sMessageReport;
		struct	_SGIP_REPORT_REP			sMessageReportRep;
		struct	_SGIP_USERRPT				sMessageUserRpt;
		struct	_SGIP_USERRPT_REP			sMessageUserRptRep;
		struct	_SGIP_TRACE					sMessageTrace;
		struct	_SGIP_TRACE_REP				sMessageTraceRep;
	};

	struct _SGIP
	{
		_SGIP_HEAD	sMessageHead;
		_SGIP_BODY	uMessageBody;
	};

/////////////////////////////////////////////////////////////////////////////
// CPSgip
class ATL_NO_VTABLE CPSgip : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CPSgip, &CLSID_PSgip>,
	public ISupportErrorInfo,
	public IConnectionPointContainerImpl<CPSgip>,
	public IDispatchImpl<IPSgip, &IID_IPSgip, &LIBID_SGIPLib>,
	public CProxy_IPSgipEvents< CPSgip >
{
public:
	CPSgip():m_cQueueEmpty(MAX_BUFFER_SIZE), m_cQueueReady(MAX_BUFFER_SIZE), m_cFileRecorder("SGIP")
	{
		m_szLocalIP[0] = 0;
		m_szSaveFile[0] = 0;
		m_iPortListen = 0;

		m_lBufferIndex4MultiSM = -1;
		m_lSendMaxNumberPerPackage = 1;
		//us

⌨️ 快捷键说明

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