www.pudn.com > smpplib.zip > EsmeTransceiverCom.h


// EsmeTransceiverCom.h : Declaration of the CEsmeTransceiverCom 
 
#pragma once 
#include "resource.h"       // main symbols 
 
#include "SMPPCOM.h" 
#include "_IEsmeTransceiverComEvents_CP.h" 
 
#include "..\smpppacket.h" 
#include "..\EsmeTransceiver.h" 
 
// CEsmeTransceiverCom 
 
class ATL_NO_VTABLE CEsmeTransceiverCom : public CEsmeTransceiver, 
	public CComObjectRootEx, 
	public CComCoClass, 
	public IConnectionPointContainerImpl, 
	public CProxy_IEsmeTransceiverComEvents,  
	public IDispatchImpl 
{ 
public: 
	CEsmeTransceiverCom() 
	{ 
		m_last_msg_id = ""; 
		m_response_event = CreateEvent(NULL, TRUE, FALSE, NULL); 
		InitializeCriticalSection(&m_cs); 
 
		//register callback handle function to processing receiving packets 
		registerProcessPacket(processPacketProc, this); 
	} 
 
	~CEsmeTransceiverCom() 
	{ 
		CloseHandle(m_response_event); 
		DeleteCriticalSection(&m_cs); 
	} 
 
DECLARE_REGISTRY_RESOURCEID(IDR_ESMETRANSCEIVERCOM) 
 
DECLARE_NOT_AGGREGATABLE(CEsmeTransceiverCom) 
 
BEGIN_COM_MAP(CEsmeTransceiverCom) 
	COM_INTERFACE_ENTRY(IEsmeTransceiverCom) 
	COM_INTERFACE_ENTRY(IDispatch) 
	COM_INTERFACE_ENTRY(IConnectionPointContainer) 
END_COM_MAP() 
 
BEGIN_CONNECTION_POINT_MAP(CEsmeTransceiverCom) 
	CONNECTION_POINT_ENTRY(__uuidof(_IEsmeTransceiverComEvents)) 
END_CONNECTION_POINT_MAP() 
 
	DECLARE_PROTECT_FINAL_CONSTRUCT() 
 
	HRESULT FinalConstruct() 
	{ 
		return S_OK; 
	} 
	 
	void FinalRelease()  
	{ 
	} 
 
public: 
 
	STDMETHOD(bind)(BSTR sysid, BSTR passwd, BSTR systype, ISmppAddressCom* iaddr, VARIANT_BOOL* pret); 
	STDMETHOD(unbind)(VARIANT_BOOL* pret); 
	STDMETHOD(enquireLink)(VARIANT_BOOL* pret); 
	STDMETHOD(init)(BSTR svrip, LONG port); 
	STDMETHOD(close)(void); 
	STDMETHOD(get_Connected)(VARIANT_BOOL* pVal); 
	STDMETHOD(submitMessage)(ISubmitSMCom* isubmit, BSTR* pMsgid, VARIANT_BOOL* pret); 
 
 
protected: 
	static void __stdcall processPacketProc(CPacketBase *pak, LPVOID param); 
	void processPacket(CPacketBase *pak); 
	void NotifyClientDeliverSM(CDeliverSM *pak); 
 
protected: 
 
	HANDLE m_response_event;		//set when a response is got 
 
	CString m_last_msg_id;		//responsed msg id for last submit message 
 
	bool m_last_error;			//last command has error 
 
	CRITICAL_SECTION m_cs; 
 
}; 
 
OBJECT_ENTRY_AUTO(__uuidof(EsmeTransceiverCom), CEsmeTransceiverCom)