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

📄 psgip.h

📁 手机开发环境BREW实例
💻 H
📖 第 1 页 / 共 2 页
字号:
		m_lTimeout4Connect = 10000000;
		m_lTimeout4Recv = 20000;
		m_lPauseTime4Recv = 10000;
		m_lTimeout4Accept = 20000;
		m_lPauseTime4Accept = 10000;
		m_lPauseTime4Terminate = 3000000;
		m_lSendIntervalTime = 1000000;
		m_lTimeout4Response = 30000000;

		m_bIsEnableListen = false;
		m_bIsListenRun = false;
//		m_bEnalbeThread4AccepRunning = FALSE;
		m_bIsEnableRun = true;
		m_bIsSendRun = false;
		m_bIsRecvRun = false;

		m_bIsInit = false;
		m_bIsBinded = false;
		m_bIsBinding = false;
		m_bIsUnbind = false;

		m_dwSequenceNO = 0;

		m_dwSubmitResponseSuccessedNumber = 0;
		m_dwSubmitResponseFailedNumber = 0;
		m_dwSubmitNumber = 0;
		m_dwCurrentError4System = 0;
		m_dwCurrentError4Protocol = 0;
		m_dwLastError4System = 0;
		m_dwLastError4Protocol = 0;
		m_dwLastTime4SystemError = 0;
		m_dwLastTime4ProtocolError = 0;
		m_dwSendTime = -1;
		m_dwResponseTime = -1;

		m_szMobileID[0] = 0;
		m_BMessageContent[0] = 0;
		m_lMesageContentLength = 0;

		strcpy(m_szSPNumber, "0000");
		m_dwSPID = 3000000000;
		sprintf(m_szCorpID, "%05d", m_dwSPID % 100000);
		strcpy(m_szServiceType, "0000000000");			//业务类型

		m_szFeeMobileID[0] = 0;
		m_bFeeType = 2;
		strcpy(m_szFeeValue, "000000");
		strcpy(m_szGivenValue, "000000");
		m_bAgentFlag = 0;
		m_bMoreLateToMTFlag = 2;
		m_bPriority = 0;								//0~9
		m_szExpireTime[0] = 0;							//存活有效期,格式遵循SGIP3.3协议
		m_szScheduleTime[0] = 0;						//定时发送时间,格式遵循SGIP3.3协议
		m_bReportFlag = 2;								//状态报告标志(0:出错时返回报告,1--需要,2--不需要,3)
		m_bTPpid = 0;
		m_bTPudhi = 0;
		m_bMessageCoding = 0;
		m_bMessageType = 0;

		m_bVersion = 0x12;

		m_hEvent4Socket = WSACreateEvent();
		m_hEvent4SaveBuffer = WSACreateEvent();

//		m_bAccepted = FALSE;
		m_dwReListenInterTime = 60000;//默认60秒,没有收到网关的数据包后重新帧听的间隔时间(单位毫秒)

		for(int i = 0; i < 9; i++)m_szReserve[i] = 0;

		m_szMobileIDFix[0] = '\0';
		m_szDebugPath[0] = '\0';

	}
	
	~CPSgip()
	{
		WSACleanup();
	}

DECLARE_REGISTRY_RESOURCEID(IDR_PSGIP)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CPSgip)
	COM_INTERFACE_ENTRY(IPSgip)
	COM_INTERFACE_ENTRY(IDispatch)
	COM_INTERFACE_ENTRY(ISupportErrorInfo)
	COM_INTERFACE_ENTRY(IConnectionPointContainer)
	COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
END_COM_MAP()
BEGIN_CONNECTION_POINT_MAP(CPSgip)
	CONNECTION_POINT_ENTRY(DIID__IPSgipEvents)
END_CONNECTION_POINT_MAP()


// ISupportsErrorInfo
	STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);

// IPSgip
public:
	STDMETHOD(Init)(/*[in]*/ long lPara, /*[in, optional]*/ BSTR bStrSaveFile, /*[in, optional]*/ long lReListenInterTimeStepIs100MS, /*[in, optional]*/ BSTR bstrDebugPath, /*[out, retval]*/ long *plError);
	STDMETHOD(get_ErrorDescrption)(/*[in]*/long lErrorCode, /*[out, retval]*/ BSTR *pVal);
	char m_szDebugPath[MAX_PATH];
	STDMETHOD(get_MobileIDFix)(/*[out, retval]*/ BSTR *pVal);
	STDMETHOD(put_MobileIDFix)(/*[in]*/ BSTR newVal);
	char m_szMobileIDFix[MAX_LEN_MOBILE_ID + 1];	//统一号码前缀
	CFileRecorder m_cFileRecorder;
	CQueue m_cQueueReady;//存储已经准备好发送的位置
	CQueue m_cQueueEmpty;//存储为空的位置,如果一个Buffer位既不是Ready也不是Empty则一个是已经发出过但还没有等到回应包的状态
	char m_szReserve[9];
	STDMETHOD(get_Reserve)(/*[out, retval]*/ BSTR *pVal);
	STDMETHOD(put_Reserve)(/*[in]*/ BSTR newVal);
//	BOOL m_bAccepted;//是否已经帧听到了网关连上来了
//	BOOL m_bThread4AcceptRunning;//Thread4Accep是否正在运行
//	BOOL m_bEnalbeThread4AccepRunning;//是否允许Thread4Accep继续运行

//	long m_lNoRecvCount;//未收到网关数据包的时间计数
	DWORD m_dwReListenInterTime;//没有收到网关的数据包后重新帧听的间隔时间(单位100毫秒)


	STDMETHOD(get_PortListen)(/*[out, retval]*/ short *pVal);
	STDMETHOD(put_PortListen)(/*[in]*/ short newVal);
	STDMETHOD(get_Version)(/*[out, retval]*/ BYTE *pVal);
	STDMETHOD(put_Version)(/*[in]*/ BYTE newVal);
	STDMETHOD(get_LocalIP)(/*[in, out, optional]*/ VARIANT *pPara, /*[out, retval]*/ BSTR *pVal);
	STDMETHOD(put_LocalIP)(/*[in, out, optional]*/ VARIANT *pPara, /*[in]*/ BSTR newVal);
	long LoadBuffer();
	long SaveBuffer();
	STDMETHOD(get_Para)(/*[in]*/ eParaType eInParaType, /*[out, retval]*/ long *pVal);
	STDMETHOD(put_Para)(/*[in]*/ eParaType eInParaType, /*[in]*/ long newVal);
	STDMETHOD(get_Info)(/*[in]*/eInfoType eGetInfoType, /*[out, retval]*/ long *pVal);
	long GetWaitSendCount();
	long Terminate();
	STDMETHOD(get_MessageType)(/*[out, retval]*/ BYTE *pVal);
	STDMETHOD(put_MessageType)(/*[in]*/ BYTE newVal);
	STDMETHOD(get_MessageCoding)(/*[out, retval]*/ BYTE *pVal);
	STDMETHOD(put_MessageCoding)(/*[in]*/ BYTE newVal);
	STDMETHOD(get_TPudhi)(/*[out, retval]*/ BYTE *pVal);
	STDMETHOD(put_TPudhi)(/*[in]*/ BYTE newVal);
	STDMETHOD(get_TPpid)(/*[out, retval]*/ BYTE *pVal);
	STDMETHOD(put_TPpid)(/*[in]*/ BYTE newVal);
	STDMETHOD(get_RegisteredDeliveryFlag)(/*[out, retval]*/ BYTE *pVal);
	STDMETHOD(put_RegisteredDeliveryFlag)(/*[in]*/ BYTE newVal);
	STDMETHOD(get_ExpireTime)(/*[out, retval]*/ BSTR *pVal);
	STDMETHOD(put_ExpireTime)(/*[in]*/ BSTR newVal);
	STDMETHOD(get_ScheduleTime)(/*[out, retval]*/ BSTR *pVal);
	STDMETHOD(put_ScheduleTime)(/*[in]*/ BSTR newVal);
	STDMETHOD(get_Priority)(/*[out, retval]*/ BYTE *pVal);
	STDMETHOD(put_Priority)(/*[in]*/ BYTE newVal);
	STDMETHOD(get_MoreLateToMTFlag)(/*[out, retval]*/ BYTE *pVal);
	STDMETHOD(put_MoreLateToMTFlag)(/*[in]*/ BYTE newVal);
	STDMETHOD(get_AgentFlag)(/*[out, retval]*/ BYTE *pVal);
	STDMETHOD(put_AgentFlag)(/*[in]*/ BYTE newVal);
	STDMETHOD(get_GivenValue)(/*[out, retval]*/ long *pVal);
	STDMETHOD(put_GivenValue)(/*[in]*/ long newVal);
	STDMETHOD(get_FeeValue)(/*[out, retval]*/ long *pVal);
	STDMETHOD(put_FeeValue)(/*[in]*/ long newVal);
	STDMETHOD(get_FeeType)(/*[out, retval]*/ BYTE *pVal);
	STDMETHOD(put_FeeType)(/*[in]*/ BYTE newVal);
	STDMETHOD(get_SeviceType)(/*[out, retval]*/ BSTR *pVal);
	STDMETHOD(put_SeviceType)(/*[in]*/ BSTR newVal);
	STDMETHOD(get_SPID)(/*[out, retval]*/ BSTR *pVal);
	STDMETHOD(put_SPID)(/*[in]*/ BSTR newVal);
	STDMETHOD(get_SPNumber)(/*[out, retval]*/ BSTR *pVal);
	STDMETHOD(put_SPNumber)(/*[in]*/ BSTR newVal);
	STDMETHOD(get_FeeMobileID)(/*[out, retval]*/ BSTR *pVal);
	STDMETHOD(put_FeeMobileID)(/*[in]*/ BSTR newVal);
	STDMETHOD(get_MessageContent)(/*[out, retval]*/ VARIANT *pVal);
	STDMETHOD(put_MessageContent)(/*[in]*/ VARIANT newVal);
	STDMETHOD(get_MobileID)(/*[out, retval]*/ BSTR *pVal);
	STDMETHOD(put_MobileID)(/*[in]*/ BSTR newVal);
	STDMETHOD(Submit)(/*[in, optional]*/ BSTR bStrMobileCode, /*[in, optional]*/ VARIANT *pMessageContent, /*[out, retval]*/ long *plError);
	STDMETHOD(Unbind)(/*[out, retval]*/ long *plError);
	STDMETHOD(Bind)(/*[in]*/ BSTR bStrIP, /*[in]*/ short iPort, /*[in]*/ BSTR bStrLoginName, /*[in]*/ BSTR bStrPassword, /*[out, retval]*/ long *plError);

		struct _SM_BUF
	{
		BYTE	bFlag;
		DWORD	dwTickCount;
		_SGIP	sSgipMsg;
	}m_sSMBuffer[MAX_BUFFER_SIZE];
	long	m_lBufferIndex4MultiSM;

	SOCKET	m_sSocket4MT, m_socket4SgipListen;
	char	m_szLocalIP[16];
	char	m_szSaveFile[MAX_PATH];
	short	m_iPortListen;
	WSAEVENT m_hEvent4Socket, m_hEvent4SaveBuffer;
	timeval m_sTimeval4Timeout;
	HANDLE	m_hThreadAccept;

	long	m_lSendMaxNumberPerPackage;
	long 	m_lTimeout4Connect;
	long	m_lTimeout4Recv;
	long	m_lPauseTime4Recv;
	long	m_lTimeout4Accept;
	long	m_lPauseTime4Accept;
	long	m_lPauseTime4Terminate;
	long	m_lSendIntervalTime;
	long	m_lTimeout4Response;//可以为负数

	bool	m_bIsEnableListen;
	bool	m_bIsListenRun;
	bool	m_bIsEnableRun;
	bool	m_bIsSendRun;
	bool	m_bIsRecvRun;

	bool	m_bIsInit;
	bool	m_bIsBinded;
	bool	m_bIsBinding;
	bool	m_bIsUnbind;

	DWORD	m_dwSubmitNumber;
	DWORD	m_dwSubmitResponseSuccessedNumber;
	DWORD	m_dwSubmitResponseFailedNumber;
	DWORD	m_dwCurrentError4System;
	DWORD	m_dwCurrentError4Protocol;
	DWORD	m_dwLastError4System;
	DWORD	m_dwLastError4Protocol;
	DWORD	m_dwLastTime4SystemError;
	DWORD	m_dwLastTime4ProtocolError;
	DWORD	m_dwSendTime;
	DWORD	m_dwResponseTime;

	DWORD	m_dwSequenceNO;
	_SGIP	m_sSgipMsg;

	char	m_szMobileID[MAX_BUFFER_LEN_MOBILE_ID + 1];
	BYTE	m_BMessageContent[MAX_BUFFER_LEN_CONTENT + 1];
	long	m_lMesageContentLength;

	DWORD	m_dwSPID;
	char	m_szSPNumber[MAX_LEN_MOBILE_ID + 1];
	char	m_szFeeMobileID[MAX_LEN_MOBILE_ID + 1];
	char	m_szCorpID[6];
	char	m_szServiceType[11];						//业务类型
	BYTE	m_bFeeType;
	char	m_szFeeValue[7];
	char	m_szGivenValue[7];
	BYTE	m_bAgentFlag;
	BYTE	m_bMoreLateToMTFlag;
	BYTE	m_bPriority;								//0~9
	char	m_szExpireTime[17];							//存活有效期,格式遵循SGIP3.3协议
	char	m_szScheduleTime[17];						//定时发送时间,格式遵循SGIP3.3协议
	BYTE	m_bReportFlag;								//状态报告标志(0:出错时返回报告,1--需要,2--不需要,3)
	BYTE	m_bTPpid;
	BYTE	m_bTPudhi;
	BYTE	m_bMessageCoding;
	BYTE	m_bMessageType;

	BYTE	m_bVersion;
protected:
	bool	AddMobileID(BSTR bStrMobileID);
private:
	const char* GetErrorDescription(long dwErrCode);
};

#endif //__PSGIP_H_

⌨️ 快捷键说明

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