/************************************************************************* 【文件名】 VirtualLine.h 【功能模块和目的】 虚拟线路管理类头文件 【开发者及日期】 郑石诺 2015/03/24 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once class CReqBase; class CProxyShell; /************************************************************************* 【类名】 CVirtualLine 【功能】 【接口说明】 虚拟线路管理类 【开发者及日期】 郑石诺 2015/03/24 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CVirtualProxy { public: CVirtualProxy(CProxyShell* pParent, CRDRID DevId); virtual ~CVirtualProxy(void) = 0 {} // 线路操作相关 virtual UINT lineId(void) const = 0; // 线路逻辑ID virtual DEV_RES_TYPE type(void) const = 0; virtual void getAssoExtenNo(CString& ExtenNo) {} CRDRID devId(void) const { return m_DevId; } UINT state(void) const { return m_State; } CReqBase* currLineReq(void) const { return m_pLineReq; } CReqBase*& currLineReq(void) { return m_pLineReq; } const CString& callerNum(void) const { return m_CallerNum; } const CString& calleeNum(void) const { return m_CalleeNum; } bool invalidFlag(void) const { return m_IsInvalid; } bool& invalidFlag(void) { return m_IsInvalid; } long activeCallId(void) const { return m_ActiveCallId; } // 代理是否空闲 virtual bool isIdle(void) const; virtual bool isFree(void) const { return isIdle(); } // 线路基本事件处理 virtual void onNewCall(long Call, long SubCall); virtual void onDevChEvent(DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent); // 物理线路向上层发送的设备主动事件 virtual void onLineStateChanged(long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum); // 线路状态变化事件 virtual void wrap(CVirtualProxy* pWrapper) {} virtual void notifyLineInfo(void) const = 0; virtual void notifyLineInfo(PDU_DEV_TYPE DestType, int DestId) const = 0; protected: // 处理线路状态变化事件 virtual void _procLineState(long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum) = 0; // 通知上层逻辑线路状态变化事件 virtual void _notifyLineState(void) = 0; protected: CProxyShell* m_pParent; DEV_RES_ID m_DevId; // 线路的设备ID CReqBase* m_pLineReq; // 线路当前正在执行的操作 VIRTUAL_LINE_STATE m_State; // 线路当前活动呼叫状态 long m_ActiveCallId; // 线路活动会话CallID CString m_CallerNum; // 主叫号码 CString m_CalleeNum; // 被叫号码 bool m_IsInvalid; // 有效性标记 };