中航光电的中间件仓库

PBX.h 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*************************************************************************
  2. 【文件名】 PBX.h
  3. 【功能模块和目的】 毅航PBX封装类头文件
  4. 【开发者及日期】 郑石诺 2015/04/07
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. class CMC;
  11. class CDevDsp;
  12. class CDevVoip;
  13. class CDevIpm;
  14. class CDevSpan;
  15. class CIpmChannel;
  16. class CVoipChannel;
  17. class CDspChannel;
  18. class CSpanChannel;
  19. class COneLeg;
  20. class CChannelResource;
  21. /*************************************************************************
  22. 【类名】 CPBX
  23. 【功能】
  24. 【接口说明】 毅航PBX封装类
  25. 【开发者及日期】 郑石诺 2015/04/07
  26. 【版本】 V1.0.0
  27. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  28. 【更改记录】
  29. *************************************************************************/
  30. class CPBX
  31. {
  32. public:
  33. CPBX(CMC* pParent, int IsxNo);
  34. ~CPBX(void);
  35. int pbxNo(void) const { return m_IsxNo; }
  36. bool isOk(void) const;
  37. // 控制接口
  38. ULONG getVoipNetId(int BoardNo);
  39. CVoipChannel* allocVoipCh4Exten(void);
  40. CIpmChannel* allocIpmCh(ULONG NetId);
  41. CSpanChannel* allocSpanCh(int BoardNo, int SpanNo);
  42. CVoipChannel* allocVoipCh(int BoardNo);
  43. CDspChannel* allocDspCh(int BoardNo);
  44. COneLeg* allocFreeTrunk(int BoardNo, int SpanNo);
  45. COneLeg* findLeg(CRDRID Id);
  46. CIpmChannel* findIpmCh(CRDRID ResId);
  47. CDspChannel* findDspCh(CRDRID ResId);
  48. CVoipChannel* findVoipCh(CRDRID ResId);
  49. CSpanChannel* findSpanCh(CRDRID ResId);
  50. bool meetingCreate(int BoardNo, MeetingInfo& MeetingId);
  51. void meetingDelete(MeetingInfo& MeetingId);
  52. bool meetingJoin(int BoardNo, COneLeg* pLeg, MeetingInfo& MeetingId, bool IsOneWay);
  53. bool meetingRemove(int BoardNo, COneLeg* pLeg, MeetingInfo& MeetingId);
  54. bool meetingRecord(int BoardNo, COneLeg* pLeg, MeetingInfo& MeetingId, RecordContent* pContent, bool IsStop);
  55. bool meetingMute(int BoardNo, COneLeg* pLeg, MeetingInfo& MeetingId, bool IsOff);
  56. // 系统事件处理
  57. void onResourceStateUpdated(INT EvtType, SYS_EVT_DATA* pEvtData);
  58. void onResourceAlarm(INT EvtType, SYS_EVT_DATA* pEvtData);
  59. void onResourceCapacity(INT EvtType, SYS_EVT_DATA* pEvtData);
  60. void onSipRegSent(SEND_SIPREG_RET* pSent);
  61. void onSipRegAck(SIP_REGISTER_ACK* pAck);
  62. void onSipTransaction(SIP_TRANSACTION_IND* pTransaction);
  63. private:
  64. void __free(void);
  65. CDevSpan* __getSpan(int BoardNo, bool NewWhenNull = false);
  66. CDevDsp* __getDsp(int BoardNo, bool NewWhenNull = false);
  67. CDevVoip* __getVoip(int BoardNo, bool NewWhenNull = false);
  68. CDevIpm* __getIpm(int BoardNo, bool NewWhenNull = false);
  69. bool __isSpanOk(void) const;
  70. bool __isDspOk(void) const;
  71. bool __isVoipOk(void) const;
  72. bool __isIpmOk(void) const;
  73. private:
  74. CMC* m_pParent;
  75. int m_IsxNo; // 毅航设备节点号
  76. // PBX属性相关
  77. UINT m_state;
  78. // 设备资源相关
  79. CArray<CDevSpan*, CDevSpan*> m_SpanList;
  80. CArray<CDevDsp*, CDevDsp*> m_DspList;
  81. CArray<CDevVoip*, CDevVoip*> m_VoipList;
  82. CArray<CDevIpm*, CDevIpm*> m_IpmList;
  83. };