📄 ~smgpconn.~h
字号:
SMGPClient();
virtual ~SMGPClient();
//@}
/**@name GetFunctions */
//@{
/**得到提交的SUBMIT消息数
*/
long GetSubmitCount() const
{ return submitCountTotal; }
/**得到发送成功的SUBMIT消息数
*/
long GetSubmitSucceedCount() const
{ return submitSucceedCountTotal; }
/**得到发送失败的SUBMIT消息数
*/
long GetSubmitFailedCount() const
{ return submitFailedCountTotal; }
/**得到失败的SUBMITResponse消息数
*/
long GetRespFailedCount() const
{ return respFailedCountTotal; }
/**得到成功的SUBMITResponse消息数
*/
long GetRespSucceedCount() const
{ return respSucceedCountTotal; }
/**得到收到的Deliver消息数
*/
long GetDeliverCount() const
{ return deliverCountTotal; }
/**得到收到的StatusReport消息数
*/
long GetStatusReportCount() const
{ return sreportCountTotal; }
//@}
/**@name Main Functions */
//@{
///**创建一个连接token
//*/
//CString CreateToken() const;
//virtual void DumpStatus();
/**初始化Client函数.
注意: 每个Client在进行所有操作之前必须调用Initialize()进行初始化操作
*/
void Initialize(
unsigned nMinWorkThreadsCount = 4,
unsigned nMaxWorkThreadsCount = 8,
unsigned short nListenPort = 11357
);
/**记录Client日志信息和connection日志信息,默认将所有信息发送到调试窗口(Debug模式下)
*/
virtual void LogWrite(
const char * pchFmt,
...
);
/**建立一个连接
*/
SMGPConnection * MakeConnection(
const char * _smghost,
const unsigned short & _smgport,
const unsigned char & _smgversion,
const char * _username,
const char * _password,
const ConnectionType & _conntype,
const int & _nActivetestInterval,
const char * _localhost = NULL,
const unsigned short & _localport = 0,
BOOL sync = TRUE
);
/**停止网关服务
*/
virtual void Release();
/**清除连接
*/
void ClearConnection(
const char * token
);
/**清除当前Client中的所有连接
*/
void ClearAllConnections();
/**找到第一个可用的连接
*/
SMGPConnection * firstFitRouter(
int start
);
/**循环使用可用的连接
*/
SMGPConnection * roundRobinRouter();
/**发送一条Submit消息
*/
int Submit(
smgp_submit & message
);
//@}
/**@name Callback functions */
//@{
/**登录网关成功时调用
*/
virtual void OnConnectionLogined(
SMGPConnection & connection
)
{
return;
}
/**登录网关失败时调用
*/
virtual void OnConnectionLoginFailed(
SMGPConnection & connection,
int errorCode
)
{
return;
}
/**同网关连接断开时调用
*/
virtual void OnConnectionCleared(
SMGPConnection & connection
)
{
return;
}
/**发送SUBMIT消息前调用,如果返回失败,则停止发送SUBMIT消息.
在这里,只是简单地返回TRUE.
*/
virtual BOOL OnConnectionSubmiting(
SMGPConnection & connection,
smgp_submit _message
)
{
return TRUE;
}
/**发送SUBMIT消息成功时调用
*/
virtual void OnConnectionSubmited(
SMGPConnection & connection,
smgp_submit _message
)
{
return;
}
/**发送SUBMIT消息失败时调用
*/
virtual void OnConnectionSubmitFailed(
SMGPConnection & connection,
smgp_submit _message
)
{
return;
}
/**收到CONNECT_RESPONSE时调用
*/
virtual void OnReceivedConnectionConnectResponse(
SMGPConnection & connection,
smgp_connect_resp _message
)
{
return;;
}
/**收到Terminate消息时调用
*/
virtual void OnReceivedConnectionTerminate(
SMGPConnection & connection
)
{
return;
}
/**收到SUBMIT_RESPONSE时调用
*/
virtual void OnReceivedConnectionSubmitResponse(
SMGPConnection & connection,
smgp_submit_deliver_resp _message
)
{
return;
}
/**收到Deliver消息时调用
*/
virtual void OnReceivedConnectionDeliver(
SMGPConnection & connection,
smgp_deliver _message
)
{
return;
}
/**收到STATUS_REPORT时调用
*/
virtual void OnReceivedConnectionStatusReport(
SMGPConnection & connection,
smgp_deliver _message
)
{
return;
}
/**收到活动测试消息时调用
*/
virtual void OnReceivedConnectionActiveTest(
SMGPConnection & connection
)
{
return;
}
/**收到活动测试回复消息时调用
*/
virtual void OnReceivedConnectionActiveTestResponse(
SMGPConnection & connection
)
{
return;
}
/**输出日志时调用
格式化输出日志,默认是把内容//TRACE出来
*/
virtual void OnConnectionLogWrite(
SMGPConnection & connection,
const char * str
);
//@}
protected:
/**创建一个连接token
*/
const char * CreateToken() const;
public:
/**@name JobProcess functions */
//@{
/**发送SUBMIT消息前调用,如果返回失败,则停止发送SUBMIT消息.
在这里,只是简单地返回TRUE.
*/
BOOL ProcessConnectionSubmiting(
SMGPConnection & connection,
smgp_submit _message
);
/**发送SUBMIT消息成功时调用
*/
void ProcessConnectionSubmited(
SMGPConnection & connection,
smgp_submit _message
);
/**发送SUBMIT消息失败时调用
*/
void ProcessConnectionSubmitFailed(
SMGPConnection & connection,
smgp_submit _message
);
/**收到CONNECT_RESPONSE时调用
*/
void ProcessReceivedConnectionConnectResponse(
SMGPConnection & connection,
smgp_connect_resp _message
);
/**收到Terminate消息时调用
*/
void ProcessReceivedConnectionTerminate(
SMGPConnection & connection
);
/**收到SUBMIT_RESPONSE时调用
*/
void ProcessReceivedConnectionSubmitResponse(
SMGPConnection & connection,
smgp_submit_deliver_resp _message
);
/**收到Deliver消息时调用
*/
void ProcessReceivedConnectionDeliver(
SMGPConnection & connection,
smgp_deliver _message
);
/**收到STATUS_REPORT时调用
*/
void ProcessReceivedConnectionStatusReport(
SMGPConnection & connection,
smgp_deliver _message
);
/**收到活动测试消息时调用
*/
void ProcessReceivedConnectionActiveTest(SMGPConnection & connection);
/**收到活动测试回复消息时调用
*/
void ProcessReceivedConnectionActiveTestResponse(SMGPConnection & connection);
unsigned short GetLocalPort()
{
long returnPort = ::InterlockedIncrement((long*)&ushLocalPort);
if (returnPort - ushLocalPort > 1000) {
ushLocalPort -= 1000;
}
return (unsigned short)returnPort;
}
protected:
CThreadPool m_pool;
CWorkerSmgp m_worker;
CJobSmgp * m_pJob;
aList connectionList;
MyCriticalSection listLock;
SMGPConnection * lastPick;
int m_nMinWorkThreadsCount;
int m_nMaxWorkThreadsCount;
BOOL m_fStarted;
BOOL m_fExceeded;
long submitCountTotal; ///< 提交的SUBMIT消息数
long submitSucceedCountTotal; ///< SUBMIT发送成功消息数
long submitFailedCountTotal; ///< SUBMIT发送失败消息数
long respSucceedCountTotal; ///< 收到的成功的submitresponse消息数
long respFailedCountTotal; ///< 收到的失败的submitresponse消息数
long deliverCountTotal; ///< 收到的Deliver消息数
long sreportCountTotal; ///< 状态报告数
long ushLocalPort; ///< 本地监听起始端口
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -