华辉中间件项目(代码服务器上没有,用杨成电脑的源代码上传的)

ProxyVoip.h 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /*************************************************************************
  2. 【文件名】 ProxyVoip.h
  3. 【功能模块和目的】 VOIP线路代理类头文件
  4. 【开发者及日期】 郑石诺 2015/05/21
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. #include "virtualproxy.h"
  11. /*************************************************************************
  12. 【类名】 CProxyVoip
  13. 【功能】
  14. 【接口说明】 VOIP线路代理类
  15. 【开发者及日期】 郑石诺 2015/05/21
  16. 【版本】 V1.0.0
  17. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  18. 【更改记录】
  19. *************************************************************************/
  20. class CProxyVoip : public CVirtualProxy
  21. {
  22. private:
  23. class IImplement
  24. {
  25. public:
  26. virtual ~IImplement(void) = 0 {}
  27. virtual void onNewCall(CProxyVoip& Proxy, long Call, long SubCall) = 0;
  28. virtual void onDevChEvent(CProxyVoip& Proxy, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent) = 0;
  29. virtual void onLineStateChanged(CProxyVoip& Proxy, long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum) = 0;
  30. virtual void procLineState(CProxyVoip& Proxy, long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum) = 0;
  31. virtual void notifyLineState(CProxyVoip& Proxy) = 0;
  32. virtual UINT transVirtualState2OuterState(VIRTUAL_LINE_STATE State) const = 0;
  33. };
  34. class CImplement4Trunk : public IImplement
  35. {
  36. public:
  37. void onNewCall(CProxyVoip& Proxy, long Call, long SubCall);
  38. void onDevChEvent(CProxyVoip& Proxy, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent);
  39. void onLineStateChanged(CProxyVoip& Proxy, long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum);
  40. void procLineState(CProxyVoip& Proxy, long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum);
  41. void notifyLineState(CProxyVoip& Proxy);
  42. UINT transVirtualState2OuterState(VIRTUAL_LINE_STATE State) const;
  43. };
  44. class CImplement4Exten : public IImplement
  45. {
  46. void onNewCall(CProxyVoip& Proxy, long Call, long SubCall);
  47. void onDevChEvent(CProxyVoip& Proxy, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent);
  48. void onLineStateChanged(CProxyVoip& Proxy, long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum);
  49. void procLineState(CProxyVoip& Proxy, long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum);
  50. void notifyLineState(CProxyVoip& Proxy);
  51. UINT transVirtualState2OuterState(VIRTUAL_LINE_STATE State) const;
  52. };
  53. public:
  54. CProxyVoip(CProxyShell* pParent, CRDRID DevId);
  55. virtual ~CProxyVoip(void);
  56. void getAssoExtenNo(CString& ExtenNo);
  57. ////////////////////////////////////////////////////////////////////////////////
  58. //继承自CVirtualProxy
  59. UINT lineId(void) const { return m_DevId.toIntId(); }
  60. DEV_RES_TYPE type(void) const { return DEV_RES_TYPE_VOIP; }
  61. void wrap(CVirtualProxy* pWrapper);
  62. void notifyLineInfo(void) const;
  63. void notifyLineInfo(PDU_DEV_TYPE DestType, int DestId) const;
  64. void onNewCall(long Call, long SubCall);
  65. void onDevChEvent(DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent);
  66. void onLineStateChanged(long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum);
  67. protected:
  68. ////////////////////////////////////////////////////////////////////////////////
  69. //继承自CVirtualLine
  70. void _procLineState(long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum);
  71. void _notifyLineState(void);
  72. private:
  73. friend class CImplement4Trunk;
  74. friend class CImplement4Exten;
  75. private:
  76. static CImplement4Trunk ms_Implement4Trunk;
  77. static CImplement4Exten ms_Implement4Exten;
  78. IImplement* m_pImplement;
  79. CVirtualProxy* m_IAmExten; // 当前代理所代表的SIP内线
  80. };