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

📄 ~smgpconn.~h

📁 SMAL是short message abstract library的缩写,是由风起水流软件工作室(www.zealware.com)开发的一个支持短信网关系统开发的C++底层抽象接口库
💻 ~H
📖 第 1 页 / 共 2 页
字号:
	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 + -