/************************************************************************* 【文件名】 ProxyVoip.h 【功能模块和目的】 VOIP线路代理类头文件 【开发者及日期】 郑石诺 2015/05/21 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once #include "virtualproxy.h" /************************************************************************* 【类名】 CProxyVoip 【功能】 【接口说明】 VOIP线路代理类 【开发者及日期】 郑石诺 2015/05/21 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CProxyVoip : public CVirtualProxy { private: class IImplement { public: virtual ~IImplement(void) = 0 {} virtual void onNewCall(CProxyVoip& Proxy, long Call, long SubCall) = 0; virtual void onDevChEvent(CProxyVoip& Proxy, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent) = 0; virtual void onLineStateChanged(CProxyVoip& Proxy, long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum) = 0; virtual void procLineState(CProxyVoip& Proxy, long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum) = 0; virtual void notifyLineState(CProxyVoip& Proxy) = 0; virtual UINT transVirtualState2OuterState(VIRTUAL_LINE_STATE State) const = 0; }; class CImplement4Trunk : public IImplement { public: void onNewCall(CProxyVoip& Proxy, long Call, long SubCall); void onDevChEvent(CProxyVoip& Proxy, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent); void onLineStateChanged(CProxyVoip& Proxy, long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum); void procLineState(CProxyVoip& Proxy, long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum); void notifyLineState(CProxyVoip& Proxy); UINT transVirtualState2OuterState(VIRTUAL_LINE_STATE State) const; }; class CImplement4Exten : public IImplement { void onNewCall(CProxyVoip& Proxy, long Call, long SubCall); void onDevChEvent(CProxyVoip& Proxy, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent); void onLineStateChanged(CProxyVoip& Proxy, long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum); void procLineState(CProxyVoip& Proxy, long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum); void notifyLineState(CProxyVoip& Proxy); UINT transVirtualState2OuterState(VIRTUAL_LINE_STATE State) const; }; public: CProxyVoip(CProxyShell* pParent, CRDRID DevId); virtual ~CProxyVoip(void); void getAssoExtenNo(CString& ExtenNo); //////////////////////////////////////////////////////////////////////////////// //继承自CVirtualProxy UINT lineId(void) const { return m_DevId.toIntId(); } DEV_RES_TYPE type(void) const { return DEV_RES_TYPE_VOIP; } void wrap(CVirtualProxy* pWrapper); void notifyLineInfo(void) const; void notifyLineInfo(PDU_DEV_TYPE DestType, int DestId) const; void onNewCall(long Call, long SubCall); void onDevChEvent(DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent); void onLineStateChanged(long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum); protected: //////////////////////////////////////////////////////////////////////////////// //继承自CVirtualLine void _procLineState(long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum); void _notifyLineState(void); private: friend class CImplement4Trunk; friend class CImplement4Exten; private: static CImplement4Trunk ms_Implement4Trunk; static CImplement4Exten ms_Implement4Exten; IImplement* m_pImplement; CVirtualProxy* m_IAmExten; // 当前代理所代表的SIP内线 };