修改三方通话功能,在发起三方通话时,先保持住主叫,然后再拉回主叫到会议

VirtualProxy.h 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /*************************************************************************
  2. 【文件名】 VirtualLine.h
  3. 【功能模块和目的】 虚拟线路管理类头文件
  4. 【开发者及日期】 郑石诺 2015/03/24
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. class CReqBase;
  11. class CProxyShell;
  12. /*************************************************************************
  13. 【类名】 CVirtualLine
  14. 【功能】
  15. 【接口说明】 虚拟线路管理类
  16. 【开发者及日期】 郑石诺 2015/03/24
  17. 【版本】 V1.0.0
  18. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  19. 【更改记录】
  20. *************************************************************************/
  21. class CVirtualProxy
  22. {
  23. public:
  24. CVirtualProxy(CProxyShell* pParent, CRDRID DevId);
  25. virtual ~CVirtualProxy(void) = 0 {}
  26. // 线路操作相关
  27. virtual UINT lineId(void) const = 0; // 线路逻辑ID
  28. virtual DEV_RES_TYPE type(void) const = 0;
  29. virtual void getAssoExtenNo(CString& ExtenNo) {}
  30. CRDRID devId(void) const { return m_DevId; }
  31. UINT state(void) const { return m_State; }
  32. CReqBase* currLineReq(void) const { return m_pLineReq; }
  33. CReqBase*& currLineReq(void) { return m_pLineReq; }
  34. const CString& callerNum(void) const { return m_CallerNum; }
  35. const CString& calleeNum(void) const { return m_CalleeNum; }
  36. bool invalidFlag(void) const { return m_IsInvalid; }
  37. bool& invalidFlag(void) { return m_IsInvalid; }
  38. long activeCallId(void) const { return m_ActiveCallId; }
  39. // 代理是否空闲
  40. virtual bool isIdle(void) const;
  41. virtual bool isFree(void) const { return isIdle(); }
  42. // 线路基本事件处理
  43. virtual void onNewCall(long Call, long SubCall);
  44. virtual void onDevChEvent(DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent); // 物理线路向上层发送的设备主动事件
  45. virtual void onLineStateChanged(long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum); // 线路状态变化事件
  46. virtual void wrap(CVirtualProxy* pWrapper) {}
  47. virtual void notifyLineInfo(void) const = 0;
  48. virtual void notifyLineInfo(PDU_DEV_TYPE DestType, int DestId) const = 0;
  49. protected:
  50. // 处理线路状态变化事件
  51. virtual void _procLineState(long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum) = 0;
  52. // 通知上层逻辑线路状态变化事件
  53. virtual void _notifyLineState(void) = 0;
  54. protected:
  55. CProxyShell* m_pParent;
  56. DEV_RES_ID m_DevId; // 线路的设备ID
  57. CReqBase* m_pLineReq; // 线路当前正在执行的操作
  58. VIRTUAL_LINE_STATE m_State; // 线路当前活动呼叫状态
  59. long m_ActiveCallId; // 线路活动会话CallID
  60. CString m_CallerNum; // 主叫号码
  61. CString m_CalleeNum; // 被叫号码
  62. bool m_IsInvalid; // 有效性标记
  63. };