📄 smppconn.h
字号:
//##ModelId=46B5D42D0212
CJobSmpp(SMPPClient & _client, SMPPConnection & _connection, JobType _type, PDU_SMPP_DELIVER_SM _message);
//##ModelId=46B5D42D021C
~CJobSmpp();
//##ModelId=46B5D42D021D
void OnSendSubmit();
//##ModelId=46B5D42D0226
void OnSubmitSucceed();
//##ModelId=46B5D42D0230
void OnDeliver();
//##ModelId=46B5D42D0231
void OnTerminate();
//##ModelId=46B5D42D023A
void OnConnectResponse();
//##ModelId=46B5D42D023B
void OnSubmitFailed();
//##ModelId=46B5D42D0244
void OnSubmitResponse();
//##ModelId=46B5D42D024E
void OnSubmiting();
//##ModelId=46B5D42D0250
JobType type;
protected:
//##ModelId=46B5D42D025A
SMPPClient & client;
//##ModelId=46B5D42D0264
SMPPConnection & connection;
//##ModelId=46B5D42D0269
PDU_SMPP_SUBMIT_DELIVER_SM sdMsg;
//PDU_SMPP_DELIVER_SM deliverMsg;
//##ModelId=46B5D42D0270
PDU_SMPP_BIND_RESP connectRespMsg;
//##ModelId=46B5D42D0278
PDU_SMPP_SUBMIT_DELIVER_SM_RESP sdRespMsg;
//int nResult;
};
//##ModelId=46B5D42D0281
class CWorkerSmpp:public IWorker {
//##ModelId=46B5D42D028C
virtual void ProcessJob( IJobDesc* pJobDesc );
};
///////////////////////////////////////////////////////////////////////////////
//
//##ModelId=46B5D42D0295
typedef std::list<SMPPConnection*> aList;
//##ModelId=46B5D42D0321
class SMPPClient
{
public:
/**@name Construction */
//@{
//##ModelId=46B5D42D032B
SMPPClient();
//##ModelId=46B5D42D032C
virtual ~SMPPClient();
//@}
/**@name GetFunctions */
//@{
/**得到提交的SUBMIT消息数
*/
//##ModelId=46B5D42D0335
long GetSubmitCount() const
{ return submitCountTotal; }
/**得到发送成功的SUBMIT消息数
*/
//##ModelId=46B5D42D0337
long GetSubmitSucceedCount() const
{ return submitSucceedCountTotal; }
/**得到发送失败的SUBMIT消息数
*/
//##ModelId=46B5D42D033F
long GetSubmitFailedCount() const
{ return submitFailedCountTotal; }
/**得到失败的SUBMITResponse消息数
*/
//##ModelId=46B5D42D0341
long GetRespFailedCount() const
{ return respFailedCountTotal; }
/**得到成功的SUBMITResponse消息数
*/
//##ModelId=46B5D42D0343
long GetRespSucceedCount() const
{ return respSucceedCountTotal; }
/**得到收到的Deliver消息数
*/
//##ModelId=46B5D42D0345
long GetDeliverCount() const
{ return deliverCountTotal; }
//@}
/**@name Main Functions */
//@{
/**初始化Client函数.
注意: 每个Client在进行所有操作之前必须调用Initialize()进行初始化操作
@param nMinWorkThreadsCount 指定线程池要启用的初始线程数
@param nMaxWorkThreadsCount 指定线程池允许使用的最大线程数
*/
//##ModelId=46B5D42D0349
void Initialize(
unsigned nMinWorkThreadsCount = 4,
unsigned nMaxWorkThreadsCount = 8
);
/**建立一个连接
@param _smghost 要连接的网关地址
@param _smgport 要连接的网关端口号
@param _username 登录用户名
@param _password 登录口令
@param _icpid 企业代码
@param _conntype 连接类型
@param _isAsiaInfoSmg 是否是亚信网关
@param _nActivetestInterval 活动测试时间间隔
@param sync 是否同时登录网关(一般填TRUE)
@return 如果成功连接的话,'''''''''''''''''''''''''''''''''''''''''''''']
返回该连接的指针
*/
//##ModelId=46B5D42D034C
SMPPConnection * MakeConnection(
const char * _smschost,
const unsigned short & _smscport,
const ConnectionType & _conntype,
const char * _username,
const char * _password,
const char * _systemtype,
const unsigned char & _interfaceversion,
const int & _nActivetestInterval,
BOOL sync
);
/**停止网关服务
*/
//##ModelId=46B5D42D035D
virtual void Release();
/**清除连接
*/
//##ModelId=46B5D42D035F
void ClearConnection(const char * token);
/**清除当前Client中的所有连接
*/
//##ModelId=46B5D42D0361
void ClearAllConnections();
/**发送一条Submit消息
*/
//##ModelId=46B5D42D0367
int Submit(PDU_SMPP_SUBMIT_SM & message);
//@}
/**@name Callback functions */
//@{
/**登录网关成功时调用
*/
//##ModelId=46B5D42D0369
virtual void OnConnectionLogined(SMPPConnection & connection)
{
return;
}
/**登录网关失败时调用
*/
//##ModelId=46B5D42D036C
virtual void OnConnectionLoginFailed(
SMPPConnection & connection,
int errorCode
)
{
return;
}
/**同网关连接断开时调用
*/
//##ModelId=46B5D42D0374
virtual void OnConnectionCleared(SMPPConnection & connection)
{
return;
}
/**发送SUBMIT消息前调用,如果返回失败,则停止发送SUBMIT消息.
在这里,只是简单地返回TRUE.
*/
//##ModelId=46B5D42D0377
virtual BOOL OnConnectionSubmiting(
SMPPConnection & connection,
PDU_SMPP_SUBMIT_SM _message
)
{
return TRUE;
}
/**发送SUBMIT消息成功时调用
*/
//##ModelId=46B5D42D037C
virtual void OnConnectionSubmited(
SMPPConnection & connection,
PDU_SMPP_SUBMIT_SM _message
)
{
return;
}
/**发送SUBMIT消息失败时调用
*/
//##ModelId=46B5D42D0380
virtual void OnConnectionSubmitFailed(
SMPPConnection & connection,
PDU_SMPP_SUBMIT_SM _message
)
{
return;
}
/**收到CONNECT_RESPONSE时调用
*/
//##ModelId=46B5D42D0384
virtual void OnReceivedConnectionConnectResponse(
SMPPConnection & connection,
PDU_SMPP_BIND_RESP _message
)
{
return;;
}
/**收到Terminate消息时调用
*/
//##ModelId=46B5D42D0388
virtual void OnReceivedConnectionTerminate(SMPPConnection & connection)
{
return;
}
/**收到SUBMIT_RESPONSE时调用
*/
//##ModelId=46B5D42D038B
virtual void OnReceivedConnectionSubmitResponse(
SMPPConnection & connection,
PDU_SMPP_SUBMIT_SM_RESP _message
)
{
return;
}
/**收到Deliver消息时调用
*/
//##ModelId=46B5D42D038F
virtual void OnReceivedConnectionDeliver(
SMPPConnection & connection,
PDU_SMPP_DELIVER_SM _message
)
{
return;
}
/**输出日志时调用
格式化输出日志,默认是把内容//TRACE出来
*/
//##ModelId=46B5D42D0393
virtual void OnConnectionLogWrite(SMPPConnection & connection, const char * str);
//@}
BOOL IsBusy();
public:
/**@name JobProcess functions */
//@{
//##ModelId=46B5D42D0399
BOOL ProcessConnectionSubmiting(
SMPPConnection & connection,
PDU_SMPP_SUBMIT_SM _message
);
//##ModelId=46B5D42D039C
void ProcessConnectionSubmited(
SMPPConnection & connection,
PDU_SMPP_SUBMIT_SM _message
);
//##ModelId=46B5D42D039F
void ProcessConnectionSubmitFailed(
SMPPConnection & connection,
PDU_SMPP_SUBMIT_SM _message
);
//##ModelId=46B5D42D03A4
void ProcessReceivedConnectionConnectResponse(
SMPPConnection & connection,
PDU_SMPP_BIND_RESP _message
);
//##ModelId=46B5D42D03A7
void ProcessReceivedConnectionTerminate(SMPPConnection & connection);
//##ModelId=46B5D42D03A9
void ProcessReceivedConnectionSubmitResponse(
SMPPConnection & connection,
PDU_SMPP_SUBMIT_SM_RESP _message
);
//##ModelId=46B5D42D03AE
void ProcessReceivedConnectionDeliver(
SMPPConnection & connection,
PDU_SMPP_DELIVER_SM _message
);
protected:
/**创建一个连接token
*/
//##ModelId=46B5D42D03B1
const char * CreateToken() const;
/**找到第一个可用的连接
*/
//##ModelId=46B5D42D03B3
SMPPConnection * firstFitRouter(int start);
/**循环使用可用的连接
*/
//##ModelId=46B5D42D03B8
SMPPConnection * roundRobinRouter();
/**记录Client日志信息和connection日志信息,默认将所有信息发送到调试窗口(Debug模式下)
*/
//##ModelId=46B5D42D03B9
virtual void LogWrite(const char * pchFmt, ...);
private:
//##ModelId=46B5D42D03C3
CThreadPool m_pool;
//##ModelId=46B5D42D03C8
CWorkerSmpp m_worker;
//##ModelId=46B5D42D03CF
CJobSmpp * m_pJob;
//##ModelId=46B5D42D03D6
aList connectionList;
//##ModelId=46B5D42D03DB
MyCriticalSection m_listCS;
//##ModelId=46B5D42D03E0
SMPPConnection * lastPick;
//##ModelId=46B5D42E0001
int m_nMinWorkThreadsCount;
//##ModelId=46B5D42E0002
int m_nMaxWorkThreadsCount;
//##ModelId=46B5D42E0003
BOOL m_fStarted;
//##ModelId=46B5D42E000B
long submitCountTotal;
//##ModelId=46B5D42E000C
long submitSucceedCountTotal;
//##ModelId=46B5D42E0015
long submitFailedCountTotal;
//##ModelId=46B5D42E0016
long respSucceedCountTotal;
//##ModelId=46B5D42E0017
long respFailedCountTotal;
//##ModelId=46B5D42E001F
long deliverCountTotal;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -