📄 psgip.h
字号:
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 + -