⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smgpconn.h

📁 SMAL是short message abstract library的缩写,是由风起水流软件工作室(www.zealware.com)开发的一个支持短信网关系统开发的C++底层抽象接口库
💻 H
📖 第 1 页 / 共 2 页
字号:
	smgp_submit_deliver_resp submitRespMsg;
	//##ModelId=46B5D43B01CC
	int								nResult;

};

//##ModelId=46B5D43B01D6
class CWorkerSmgp : public IWorker {
	//##ModelId=46B5D43B01E1
	virtual void ProcessJob( IJobDesc* pJobDesc );
};

/// SMGP客户端实现类
/** SP客户端实现,一个SMGPClient类可以创建和管理多个SMGPConnection类.用户开发短信网关程序只需要从CLIENT类派生即可.
*/
//##ModelId=46B5D43B02BD
class SMGPClient 
{
public:
	/**@name Construction */
	//@{
	//##ModelId=46B5D43B02C7
	SMGPClient();

	//##ModelId=46B5D43B02D1
	virtual ~SMGPClient();
	//@}

	/**@name GetFunctions */
	//@{
	/**得到提交的SUBMIT消息数 
	*/
	//##ModelId=46B5D43B02D3
	long GetSubmitCount() const
	{	return submitCountTotal;		}

	/**得到发送成功的SUBMIT消息数 
	*/
	//##ModelId=46B5D43B02DB
	long GetSubmitSucceedCount() const
	{	return submitSucceedCountTotal;		}

	/**得到发送失败的SUBMIT消息数 
	*/
	//##ModelId=46B5D43B02DD
	long GetSubmitFailedCount() const
	{	return submitFailedCountTotal;		}

	/**得到失败的SUBMITResponse消息数 
	*/
	//##ModelId=46B5D43B02E5
	long GetRespFailedCount() const
	{	return respFailedCountTotal;		}

	/**得到成功的SUBMITResponse消息数 
	*/
	//##ModelId=46B5D43B02E7
	long GetRespSucceedCount() const
	{	return respSucceedCountTotal;		}

	/**得到收到的Deliver消息数 
	*/
	//##ModelId=46B5D43B02EF
	long GetDeliverCount() const
	{	return deliverCountTotal;		}

	/**得到收到的StatusReport消息数 
	*/
	//##ModelId=46B5D43B02F1
	long GetStatusReportCount() const
	{	return sreportCountTotal;		}
	//@}

	/**@name Main Functions */
	//@{
	///**创建一个连接token 
	//*/
	//CString CreateToken() const;

	//virtual void DumpStatus();

	/**初始化Client函数.
	注意: 每个Client在进行所有操作之前必须调用Initialize()进行初始化操作
	*/
	//##ModelId=46B5D43B02F3
	void Initialize(
		unsigned nMinWorkThreadsCount = 4,
		unsigned nMaxWorkThreadsCount = 8,
		unsigned short nListenPort = 11357
		);

	/**记录Client日志信息和connection日志信息,默认将所有信息发送到调试窗口(Debug模式下) 
	*/
	//##ModelId=46B5D43B02FC
	virtual void OnLogWrite(
		const char * pchFmt, 
		...
		);

	/**建立一个连接 
	*/
	//##ModelId=46B5D43B0304
	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
		);

	/**停止网关服务
	 */
	//##ModelId=46B5D43B0317
	virtual void Release();

	/**清除连接 
	*/
	//##ModelId=46B5D43B0319
	void ClearConnection(
		const char * token
		);

	/**清除当前Client中的所有连接 
	*/
	//##ModelId=46B5D43B0321
	void ClearAllConnections();

	/**找到第一个可用的连接 
	*/
	//##ModelId=46B5D43B0322
	SMGPConnection * firstFitRouter(
		int start
		);

	/**循环使用可用的连接 
	*/
	//##ModelId=46B5D43B0324
	SMGPConnection * roundRobinRouter();

	/**发送一条Submit消息 
	*/
	//##ModelId=46B5D43B032B
	int Submit(
		smgp_submit & message
		);

	//@}

	/**@name Callback functions */
	//@{
	/**登录网关成功时调用 
	*/
	//##ModelId=46B5D43B032D
	virtual void OnConnectionLogined(
		SMGPConnection & connection
		)
	{
		return;
	}

	/**登录网关失败时调用 
	*/
	//##ModelId=46B5D43B0336
	virtual void OnConnectionLoginFailed(
		SMGPConnection & connection,
		int errorCode
		)
	{
		return;
	}

	/**同网关连接断开时调用 
	*/
	//##ModelId=46B5D43B033A
	virtual void OnConnectionCleared(
		SMGPConnection & connection
		)
	{
		return;
	}

	/**发送SUBMIT消息前调用,如果返回失败,则停止发送SUBMIT消息.
	在这里,只是简单地返回TRUE.
	*/
	//##ModelId=46B5D43B033F
	virtual BOOL OnConnectionSubmiting(
		SMGPConnection & connection,
		smgp_submit _message
		)
	{
		return TRUE;
	}

	/**发送SUBMIT消息成功时调用 
	*/
	//##ModelId=46B5D43B0343
	virtual void OnConnectionSubmited(
		SMGPConnection & connection,
		smgp_submit _message
		)
	{
		return;
	}

	/**发送SUBMIT消息失败时调用 
	*/
	//##ModelId=46B5D43B0349
	virtual void OnConnectionSubmitFailed(
		SMGPConnection & connection,
		smgp_submit _message
		)
	{
		return;
	}

	/**收到CONNECT_RESPONSE时调用 
	*/
	//##ModelId=46B5D43B034D
	virtual void OnReceivedConnectionConnectResponse(
		SMGPConnection & connection,
		smgp_connect_resp _message
		)
	{
		return;;
	}

	/**收到Terminate消息时调用 
	*/
	//##ModelId=46B5D43B0353
	virtual void OnReceivedConnectionTerminate(
		SMGPConnection & connection
		)
	{
		return;
	}

	/**收到SUBMIT_RESPONSE时调用 
	*/
	//##ModelId=46B5D43B0356
	virtual void OnReceivedConnectionSubmitResponse(
		SMGPConnection & connection,
		smgp_submit_deliver_resp _message
		)
	{
		return;
	}

	/**收到Deliver消息时调用 
	*/
	//##ModelId=46B5D43B035A
	virtual void OnReceivedConnectionDeliver(
		SMGPConnection & connection,
		smgp_deliver _message
		)
	{
		return;
	}

	/**收到STATUS_REPORT时调用 
	*/
	//##ModelId=46B5D43B035F
	virtual void OnReceivedConnectionStatusReport(
		SMGPConnection & connection,
		smgp_deliver _message
		)
	{
		return;
	}

	/**收到活动测试消息时调用 
	*/
	//##ModelId=46B5D43B0363
	virtual void OnReceivedConnectionActiveTest(
		SMGPConnection & connection
		)
	{
		return;
	}

	/**收到活动测试回复消息时调用 
	*/
	//##ModelId=46B5D43B0367
	virtual void OnReceivedConnectionActiveTestResponse(
		SMGPConnection & connection
		)
	{
		return;
	}

	/**输出日志时调用
	格式化输出日志,默认是把内容//TRACE出来
	*/
	//##ModelId=46B5D43B036A
	virtual void OnConnectionLogWrite(
		SMGPConnection & connection, 
		const char * str
		);
	//@}

  BOOL IsBusy();

protected:

	/**创建一个连接token 
	*/
	//##ModelId=46B5D43B0371
	const char * CreateToken() const;

public:

	/**@name JobProcess functions */
	//@{
	/**发送SUBMIT消息前调用,如果返回失败,则停止发送SUBMIT消息.
	在这里,只是简单地返回TRUE.
	*/
	//##ModelId=46B5D43B0373
	BOOL ProcessConnectionSubmiting(
		SMGPConnection & connection,
		smgp_submit _message
		);

	/**发送SUBMIT消息成功时调用 
	*/
	//##ModelId=46B5D43B037B
	void ProcessConnectionSubmited(
		SMGPConnection & connection,
		smgp_submit _message
		);

	/**发送SUBMIT消息失败时调用 
	*/
	//##ModelId=46B5D43B037E
	void ProcessConnectionSubmitFailed(
		SMGPConnection & connection,
		smgp_submit _message
		);

	/**收到CONNECT_RESPONSE时调用 
	*/
	//##ModelId=46B5D43B0381
	void ProcessReceivedConnectionConnectResponse(
		SMGPConnection & connection,
		smgp_connect_resp _message
		);

	/**收到Terminate消息时调用 
	*/
	//##ModelId=46B5D43B0387
	void ProcessReceivedConnectionTerminate( 
		SMGPConnection & connection 
		);

	/**收到SUBMIT_RESPONSE时调用 
	*/
	//##ModelId=46B5D43B0389
	void ProcessReceivedConnectionSubmitResponse(
		SMGPConnection & connection,
		smgp_submit_deliver_resp _message
		);

	/**收到Deliver消息时调用 
	*/
	//##ModelId=46B5D43B038C
	void ProcessReceivedConnectionDeliver(
		SMGPConnection & connection,
		smgp_deliver _message
		);

	/**收到STATUS_REPORT时调用 
	*/
	//##ModelId=46B5D43B0391
	void ProcessReceivedConnectionStatusReport(
		SMGPConnection & connection,
		smgp_deliver _message
		);

	/**收到活动测试消息时调用 
	*/
	//##ModelId=46B5D43B0394
	void ProcessReceivedConnectionActiveTest(SMGPConnection & connection);

	/**收到活动测试回复消息时调用 
	*/
	//##ModelId=46B5D43B0399
	void ProcessReceivedConnectionActiveTestResponse(SMGPConnection & connection);

	//##ModelId=46B5D43B039B
	unsigned short GetLocalPort()
	{
		long returnPort = ::InterlockedIncrement((long*)&ushLocalPort);
		if (returnPort - ushLocalPort > 1000) {
			ushLocalPort -= 1000;
		}

		return 	(unsigned short)returnPort;
	}

protected:
	//##ModelId=46B5D43B039D
	CThreadPool       m_pool;
	//##ModelId=46B5D43B03A4
	CWorkerSmgp           m_worker;
	//##ModelId=46B5D43B03A9
	CJobSmgp              * m_pJob;
	//##ModelId=46B5D43B03AE
	aList             connectionList;
	//##ModelId=46B5D43B03B8
	MyCriticalSection listLock;
	//##ModelId=46B5D43B03BD
	SMGPConnection    * lastPick;
	//##ModelId=46B5D43B03C1
	int               m_nMinWorkThreadsCount;
	//##ModelId=46B5D43B03C2
	int	              m_nMaxWorkThreadsCount;
	//##ModelId=46B5D43B03CB
	BOOL              m_fStarted;
	//##ModelId=46B5D43B03CC
	BOOL              m_fExceeded;

	//##ModelId=46B5D43B03D5
	long              submitCountTotal;           ///< 提交的SUBMIT消息数
	//##ModelId=46B5D43B03D6
	long              submitSucceedCountTotal;    ///< SUBMIT发送成功消息数
	//##ModelId=46B5D43B03DF
	long              submitFailedCountTotal;     ///< SUBMIT发送失败消息数
	//##ModelId=46B5D43B03E0
	long              respSucceedCountTotal;      ///< 收到的成功的submitresponse消息数
	//##ModelId=46B5D43B03E1
	long              respFailedCountTotal;       ///< 收到的失败的submitresponse消息数
	//##ModelId=46B5D43C0001
	long              deliverCountTotal;          ///< 收到的Deliver消息数
	//##ModelId=46B5D43C0002
	long              sreportCountTotal;          ///< 状态报告数

	//##ModelId=46B5D43C000B
	long              ushLocalPort;               ///< 本地监听起始端口
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -