📄 sgipapi.h
字号:
///
/// 得到当前网关到SP的连接数
//
//##ModelId=46B5D42F00B8
unsigned GetSmgConnCount() { return (unsigned)connList.size(); }
//@}
/**@name 消息处理虚函数 */
//@{
/**
* 收到DELIVER上行消息时调用该函数
*/
//##ModelId=46B5D42F00B9
virtual int OnDeliver(DeliverStr & deliver) {
return 0;
}
/**
* 收到状态报告时调用该函数
*/
//##ModelId=46B5D42F00C1
virtual int OnReport(ReportStr & report) {
return 0;
}
/**
* 收到Submit应答消息时调用此函数
*/
//##ModelId=46B5D42F00C4
virtual int OnResponse(MTRespStr & response) {
return 0;
}
/**
* 发送SUBMIT消息失败时调用该函数
*
* MT_Error的错误码描述:
* 1:因为连接不上SMG网关系统 2:登录网关失败 3:包发送失败且超过重发次数 4.超时无应答 5.消息长度为零 6.没有可用的连接
*/
//##ModelId=46B5D42F00C7
virtual int OnMTError(MTErrorStr mterror) {
return 0;
}
/**
* 记录日志函数
*/
//##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消息数
*/
//##ModelId=46B5D42F00D0
long GetSubmitCount() const
{ return submitCountTotal; }
/**得到发送成功的SUBMIT消息数
*/
//##ModelId=46B5D42F00D2
long GetSubmitSucceedCount() const
{ return submitSucceedCountTotal; }
/**得到发送失败的SUBMIT消息数
*/
//##ModelId=46B5D42F00D6
long GetSubmitFailedCount() const
{ return submitFailedCountTotal; }
/**得到失败的SUBMITResponse消息数
*/
//##ModelId=46B5D42F00D8
long GetRespFailedCount() const
{ return respFailedCountTotal; }
/**得到成功的SUBMITResponse消息数
*/
//##ModelId=46B5D42F00DA
long GetRespSucceedCount() const
{ return respSucceedCountTotal; }
/**得到收到的Deliver消息数
*/
//##ModelId=46B5D42F00DC
long GetDeliverCount() const
{ return deliverCountTotal; }
/**得到收到的StatusReport消息数
*/
//##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消息数
*/
//##ModelId=46B5D42F00E9
long AddSubmitCount() {
return ::InterlockedIncrement((long*)&submitCountTotal);
}
/**递增发送成功的SUBMIT消息数
*/
//##ModelId=46B5D42F00EA
long AddSubmitSucceedCount() {
return ::InterlockedIncrement((long*)&submitSucceedCountTotal);
}
/**递增发送失败的SUBMIT消息数
*/
//##ModelId=46B5D42F00EB
long AddSubmitFailedCount() {
return ::InterlockedIncrement((long*)&submitFailedCountTotal);
}
/**递增失败的SUBMITResponse消息数
*/
//##ModelId=46B5D42F00EC
long AddRespFailedCount() {
return ::InterlockedIncrement((long*)&respFailedCountTotal);
}
/**递增成功的SUBMITResponse消息数
*/
//##ModelId=46B5D42F00F3
long AddRespSucceedCount() {
return ::InterlockedIncrement((long*)&respSucceedCountTotal);
}
/**递增收到的Deliver消息数
*/
//##ModelId=46B5D42F00F4
long AddDeliverCount() {
return ::InterlockedIncrement((long*)&deliverCountTotal);
}
/**递增收到的StatusReport消息数
*/
//##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的错误码描述:
///// 1:因为连接不上SMG网关系统 2:登录网关失败 3:包发送失败且超过重发次数 4.超时无应答 5.消息长度为零 6.没有可用的连接
/////
//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]; ///< 网关IP地址
//##ModelId=46B5D42F0150
int m_nPeerPort; ///< 网关端口
//##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到网关连接数
//##ModelId=46B5D42F0161
char m_sSrcNum[MAX_PATH]; ///< 原节点号码
//##ModelId=46B5D42F0162
char m_sLocalIPAddr[MAX_PATH]; ///< 本机地址
//##ModelId=46B5D42F0163
int m_nLocalPort; ///< 本地监听端口
//##ModelId=46B5D42F0164
char m_sPeerName[MAX_PATH]; ///< 网关登录SP的用户名
//##ModelId=46B5D42F016B
char m_sPeerPwd[MAX_PATH]; ///< 网关登录SP的口令
//##ModelId=46B5D42F016D
unsigned m_nMaxSmgConn; ///< 允许的网关到SP的最大连接数
//##ModelId=46B5D42F0171
char m_sLogPath[MAX_PATH]; ///< 日志文件路径
//BOOL m_fLogEvent; ///< 是否记录系统日志
BOOL m_fExceeded;
//##ModelId=46B5D42F0176
CThreadPool pool; ///< 线程池
//##ModelId=46B5D42F0180
CWorkerSgip m_worker;
//##ModelId=46B5D42F0185
CJobSgip *m_pJob;
//##ModelId=46B5D42F018A
unsigned m_nMinWorkThreadsCount; ///< 线程池初始线程数
//##ModelId=46B5D42F018F
unsigned m_nMaxWorkThreadsCount; ///< 允许的线程池最大线程数
//##ModelId=46B5D42F0193
BOOL m_fStarted; ///< 是否已经启动
//##ModelId=46B5D42F0194
BOOL m_fStop; ///< 系统停止标志
//##ModelId=46B5D42F019E
SOCKET serverSocket; ///< 本地监听套接字
//##ModelId=46B5D42F01A2
HANDLE m_hThread; ///< 本地监听线程的句柄
//##ModelId=46B5D42F01A8
unsigned m_nCounter; ///< 消息的数量
//##ModelId=46B5D42F01B2
sgip_conn SubmitConn[MAX_PATH]; ///< SP到网关连接池
//##ModelId=46B5D42F01B7
MyCriticalSection m_arrayCs; ///< 队列临界区
//##ModelId=46B5D42F01BB
int m_nConnIndex; ///< 连接索引
//##ModelId=46B5D42F01BD
MyCriticalSection m_listCs;
//##ModelId=46B5D42F01C6
cList connList; ///< 网关连接队列
//##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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -