/************************************************************************* 【文件名】 VirtualChan.h 【功能模块和目的】 虚拟通道基类头文件 【开发者及日期】 郑石诺 2016/07/13 【版本】 V1.0.0 【版权信息】 Copyright (C)2016 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once class CFsProxy; class COperation; /************************************************************************* 【类名】 CVirtualChan 【功能】 【接口说明】 虚拟通道基类 【开发者及日期】 郑石诺 2016/07/13 【版本】 V1.0.0 【版权信息】 Copyright (C)2016 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CVirtualChan { public: CVirtualChan(CFsProxy* pParent, UINT ChanNo); virtual ~CVirtualChan(void); UINT no(void) const { return m_No; } CHAN_LOGIC_STATE state(void) const { return m_State; } bool isInMeeting(void) const { return m_IsInMeeting; } bool& isInMeeting(void) { return m_IsInMeeting; } COperation* currOp(void) const { return m_pOperation; } LPCTSTR chanId(void) const { return m_ChanId; } LPCTSTR sessionId(void) const { return m_SessionId; } LPCTSTR callerNum(void) const { return m_CallerNum; } LPCTSTR calleeNum(void) const { return m_CalleeNum; } LPCTSTR opNumber(void) const { return m_OpNumber; } CString& opNumber(void) { return m_OpNumber; } bool bindOp(COperation* pOp); bool releaseOp(COperation* pOp); // 待实现接口 virtual DEV_RES_TYPE type(void) const = 0; // 通道类型 virtual bool isFree(void) const = 0; virtual bool isVoid(void) const = 0; virtual void regist(void) const = 0; virtual void onChanDtmf(LPCTSTR Dtmf); virtual void onChanHold(EVENT_HOLD_TYPE HoldType); virtual void onChanEvent(PCHAN_EVENT_NOTIFY pNotify) = 0; virtual void onSessionChanEvent(CVirtualChan* pChanSession, PCHAN_EVENT_NOTIFY pNotify) = 0; protected: void _setSession(LPCTSTR SessionId, LPCTSTR ChanId); void _reset(void); protected: CFsProxy* m_pParent; // 宿主类 UINT m_No; // 通道号 CHAN_LOGIC_STATE m_State; // 状态 bool m_IsInMeeting; // 是否在会议中 COperation* m_pOperation; // 关联操作 CString m_CallerNum; // 主叫号码 CString m_CalleeNum; // 被叫号码 CString m_OpNumber; // 通道操作号码 private: CString m_ChanId; // 通道动态ID CString m_SessionId; // 会话ID };