?? sgipapi.h
字號(hào):
///
/// 得到當(dāng)前網(wǎng)關(guān)到SP的連接數(shù)
//
//##ModelId=46B5D42F00B8
unsigned GetSmgConnCount() { return (unsigned)connList.size(); }
//@}
/**@name 消息處理虛函數(shù) */
//@{
/**
* 收到DELIVER上行消息時(shí)調(diào)用該函數(shù)
*/
//##ModelId=46B5D42F00B9
virtual int OnDeliver(DeliverStr & deliver) {
return 0;
}
/**
* 收到狀態(tài)報(bào)告時(shí)調(diào)用該函數(shù)
*/
//##ModelId=46B5D42F00C1
virtual int OnReport(ReportStr & report) {
return 0;
}
/**
* 收到Submit應(yīng)答消息時(shí)調(diào)用此函數(shù)
*/
//##ModelId=46B5D42F00C4
virtual int OnResponse(MTRespStr & response) {
return 0;
}
/**
* 發(fā)送SUBMIT消息失敗時(shí)調(diào)用該函數(shù)
*
* MT_Error的錯(cuò)誤碼描述:
* 1:因?yàn)檫B接不上SMG網(wǎng)關(guān)系統(tǒng) 2:登錄網(wǎng)關(guān)失敗 3:包發(fā)送失敗且超過(guò)重發(fā)次數(shù) 4.超時(shí)無(wú)應(yīng)答 5.消息長(zhǎng)度為零 6.沒(méi)有可用的連接
*/
//##ModelId=46B5D42F00C7
virtual int OnMTError(MTErrorStr mterror) {
return 0;
}
/**
* 記錄日志函數(shù)
*/
//##ModelId=46B5D42F00CC
virtual int OnLogWrite(const char* pchFmt, ...) {
char buffer[1024] = "";
va_list arglist;
va_start( arglist, pchFmt );
#if defined(_MSC_VER) && _MSC_VER >= 1400
vsprintf_s( buffer, 1024, pchFmt, arglist );
#else
_vsnprintf( buffer, 1024, pchFmt, arglist );
#endif
//_vsnprintf( buffer, 1024, pchFmt, arglist );
va_end(arglist);
//printf("%s\n", buffer);
cout << buffer << endl;
return 0;
}
//@}
/**@name GetFunctions */
//@{
/**得到提交的SUBMIT消息數(shù)
*/
//##ModelId=46B5D42F00D0
long GetSubmitCount() const
{ return submitCountTotal; }
/**得到發(fā)送成功的SUBMIT消息數(shù)
*/
//##ModelId=46B5D42F00D2
long GetSubmitSucceedCount() const
{ return submitSucceedCountTotal; }
/**得到發(fā)送失敗的SUBMIT消息數(shù)
*/
//##ModelId=46B5D42F00D6
long GetSubmitFailedCount() const
{ return submitFailedCountTotal; }
/**得到失敗的SUBMITResponse消息數(shù)
*/
//##ModelId=46B5D42F00D8
long GetRespFailedCount() const
{ return respFailedCountTotal; }
/**得到成功的SUBMITResponse消息數(shù)
*/
//##ModelId=46B5D42F00DA
long GetRespSucceedCount() const
{ return respSucceedCountTotal; }
/**得到收到的Deliver消息數(shù)
*/
//##ModelId=46B5D42F00DC
long GetDeliverCount() const
{ return deliverCountTotal; }
/**得到收到的StatusReport消息數(shù)
*/
//##ModelId=46B5D42F00E0
long GetStatusReportCount() const
{ return sreportCountTotal; }
//@}
BOOL IsBusy();
protected:
//##ModelId=46B5D42F00E2
int SubmitFunc(sgipg_submit ss, unsigned int nSeq, unsigned int nDateTime);
/**@name SetFunctions */
//@{
/**遞增提交的SUBMIT消息數(shù)
*/
//##ModelId=46B5D42F00E9
long AddSubmitCount() {
return ::InterlockedIncrement((long*)&submitCountTotal);
}
/**遞增發(fā)送成功的SUBMIT消息數(shù)
*/
//##ModelId=46B5D42F00EA
long AddSubmitSucceedCount() {
return ::InterlockedIncrement((long*)&submitSucceedCountTotal);
}
/**遞增發(fā)送失敗的SUBMIT消息數(shù)
*/
//##ModelId=46B5D42F00EB
long AddSubmitFailedCount() {
return ::InterlockedIncrement((long*)&submitFailedCountTotal);
}
/**遞增失敗的SUBMITResponse消息數(shù)
*/
//##ModelId=46B5D42F00EC
long AddRespFailedCount() {
return ::InterlockedIncrement((long*)&respFailedCountTotal);
}
/**遞增成功的SUBMITResponse消息數(shù)
*/
//##ModelId=46B5D42F00F3
long AddRespSucceedCount() {
return ::InterlockedIncrement((long*)&respSucceedCountTotal);
}
/**遞增收到的Deliver消息數(shù)
*/
//##ModelId=46B5D42F00F4
long AddDeliverCount() {
return ::InterlockedIncrement((long*)&deliverCountTotal);
}
/**遞增收到的StatusReport消息數(shù)
*/
//##ModelId=46B5D42F00F5
long AddStatusReportCount() {
return ::InterlockedIncrement((long*)&sreportCountTotal);
}
//@}
private:
//##ModelId=46B5D42F00F6
bool LocalListen();
//##ModelId=46B5D42F0107
bool CreateLogFile();
//##ModelId=46B5D42F0108
sgip_conn* GetSubmitConn(int &nConnIndex);
//##ModelId=46B5D42F010A
void ChangeStatus(int nConnIndex, bool fBusy);
//##ModelId=46B5D42F0113
int LoginSmg(sgip_conn *pConn);
//##ModelId=46B5D42F011B
void LogoutSmg(sgip_conn *pConn);
//##ModelId=46B5D42F011D
bool CreateConn();
//##ModelId=46B5D42F0125
bool ReleaseConn();
//##ModelId=46B5D42F0126
void AddSmgConn(unsigned socketHandle, unsigned port);
//##ModelId=46B5D42F012F
void RemoveSmgConn(unsigned socketHandle);
//CString GetDateTime();
//##ModelId=46B5D42F0131
unsigned GetMaxSmgConnections() { return m_nMaxSmgConn; }
private:
//##ModelId=46B5D42F0132
static DWORD WINAPI SgipServFunc(LPVOID pParam);
//##ModelId=46B5D42F0139
virtual DWORD SgipServProc();
//int (*m_PDeliver)(DeliverStr deliver);
//int (*m_PReport)(ReportStr report);
//int (*m_PResponse)(MTRespStr response);
/////
///// MT_Error的錯(cuò)誤碼描述:
///// 1:因?yàn)檫B接不上SMG網(wǎng)關(guān)系統(tǒng) 2:登錄網(wǎng)關(guān)失敗 3:包發(fā)送失敗且超過(guò)重發(fā)次數(shù) 4.超時(shí)無(wú)應(yīng)答 5.消息長(zhǎng)度為零 6.沒(méi)有可用的連接
/////
//int (*m_PMTError)(MTErrorStr mterror);
//int (*OnLogWrite)(const char* pchFmt, ...);
//##ModelId=46B5D42F014D
const char * GetPeerName() { return m_sPeerName; }
//##ModelId=46B5D42F014E
const char * GetPeerPwd() { return m_sPeerPwd; }
private:
//##ModelId=46B5D42F014F
char m_sPeerAddr[MAX_PATH]; ///< 網(wǎng)關(guān)IP地址
//##ModelId=46B5D42F0150
int m_nPeerPort; ///< 網(wǎng)關(guān)端口
//##ModelId=46B5D42F0157
char m_sUserName[MAX_PATH]; ///< 登錄用戶名
//##ModelId=46B5D42F0158
char m_sPwd[MAX_PATH]; ///< 登錄口令
//##ModelId=46B5D42F0159
int m_nConnType; ///< 連接類型
//##ModelId=46B5D42F015A
int m_nSubmitConn; ///< SP到網(wǎng)關(guān)連接數(shù)
//##ModelId=46B5D42F0161
char m_sSrcNum[MAX_PATH]; ///< 原節(jié)點(diǎn)號(hào)碼
//##ModelId=46B5D42F0162
char m_sLocalIPAddr[MAX_PATH]; ///< 本機(jī)地址
//##ModelId=46B5D42F0163
int m_nLocalPort; ///< 本地監(jiān)聽端口
//##ModelId=46B5D42F0164
char m_sPeerName[MAX_PATH]; ///< 網(wǎng)關(guān)登錄SP的用戶名
//##ModelId=46B5D42F016B
char m_sPeerPwd[MAX_PATH]; ///< 網(wǎng)關(guān)登錄SP的口令
//##ModelId=46B5D42F016D
unsigned m_nMaxSmgConn; ///< 允許的網(wǎng)關(guān)到SP的最大連接數(shù)
//##ModelId=46B5D42F0171
char m_sLogPath[MAX_PATH]; ///< 日志文件路徑
//BOOL m_fLogEvent; ///< 是否記錄系統(tǒng)日志
BOOL m_fExceeded;
//##ModelId=46B5D42F0176
CThreadPool pool; ///< 線程池
//##ModelId=46B5D42F0180
CWorkerSgip m_worker;
//##ModelId=46B5D42F0185
CJobSgip *m_pJob;
//##ModelId=46B5D42F018A
unsigned m_nMinWorkThreadsCount; ///< 線程池初始線程數(shù)
//##ModelId=46B5D42F018F
unsigned m_nMaxWorkThreadsCount; ///< 允許的線程池最大線程數(shù)
//##ModelId=46B5D42F0193
BOOL m_fStarted; ///< 是否已經(jīng)啟動(dòng)
//##ModelId=46B5D42F0194
BOOL m_fStop; ///< 系統(tǒng)停止標(biāo)志
//##ModelId=46B5D42F019E
SOCKET serverSocket; ///< 本地監(jiān)聽套接字
//##ModelId=46B5D42F01A2
HANDLE m_hThread; ///< 本地監(jiān)聽線程的句柄
//##ModelId=46B5D42F01A8
unsigned m_nCounter; ///< 消息的數(shù)量
//##ModelId=46B5D42F01B2
sgip_conn SubmitConn[MAX_PATH]; ///< SP到網(wǎng)關(guān)連接池
//##ModelId=46B5D42F01B7
MyCriticalSection m_arrayCs; ///< 隊(duì)列臨界區(qū)
//##ModelId=46B5D42F01BB
int m_nConnIndex; ///< 連接索引
//##ModelId=46B5D42F01BD
MyCriticalSection m_listCs;
//##ModelId=46B5D42F01C6
cList connList; ///< 網(wǎng)關(guān)連接隊(duì)列
//##ModelId=46B5D42F01CF
long submitCountTotal;
//##ModelId=46B5D42F01D0
long submitSucceedCountTotal;
//##ModelId=46B5D42F01D9
long submitFailedCountTotal;
//##ModelId=46B5D42F01DA
long respSucceedCountTotal;
//##ModelId=46B5D42F01E3
long respFailedCountTotal;
//##ModelId=46B5D42F01E4
long deliverCountTotal;
//##ModelId=46B5D42F01ED
long sreportCountTotal;
static CSgip* instance;
};
#endif // SGIP_API_H
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -