升龙物业 老版本 ocx IPO, 加密狗 转值班电话

MuteReq.cpp 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #include "StdAfx.h"
  2. #include "MuteReq.h"
  3. #include "ProxyExten.h"
  4. #include "MC.h"
  5. #include "SessionShell.h"
  6. #include "ProxyShell.h"
  7. CMuteReq::CMuteReq(CProxyShell* pParent, CPduEntity& ReqPdu) : CReqBase(pParent, ReqPdu)
  8. {
  9. }
  10. CMuteReq::~CMuteReq(void)
  11. {
  12. }
  13. /*****************************************************************
  14. **【函数名称】 request
  15. **【函数功能】 发出请求(命令方式)
  16. **【参数】
  17. **【返回值】
  18. ****************************************************************/
  19. bool CMuteReq::request( void )
  20. {
  21. // 线路状态校验
  22. if(m_pHostLine->state() != VIRTUAL_LINE_STATE_TALKING)
  23. return false;
  24. bool Res = CSessionShell::GetInstance().procReqMute(m_pHostLine->activeCallId(), m_pHostLine->devId(), true);
  25. // 启动静音
  26. if(Res)
  27. {
  28. LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{LineReq}: 分机[%lu]静音"), m_pHostLine->lineId());
  29. m_pParent->notifyReqResult(m_ReqPdu, m_InstanceCall, true);
  30. }
  31. else
  32. {
  33. LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_WARNING, _T("{LineReq}: 分机[%lu]静音失败"), m_pHostLine->lineId());
  34. } // end if
  35. return Res;
  36. }
  37. /*****************************************************************
  38. **【函数名称】 cancel
  39. **【函数功能】 请求取消(命令方式)
  40. **【参数】
  41. **【返回值】
  42. ****************************************************************/
  43. bool CMuteReq::cancel( long InstanceCancel )
  44. {
  45. // 静音结束日志
  46. LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{LineReq}: 分机[%lu]静音取消"), m_pHostLine->lineId());
  47. // 结束静音
  48. bool Res = CSessionShell::GetInstance().procReqMute(m_pHostLine->activeCallId(), m_pHostLine->devId(), false);
  49. // 清除当前操作
  50. m_InstanceCall = InstanceCancel;
  51. end(true, NULL);
  52. return Res;
  53. }
  54. /*****************************************************************
  55. **【函数名称】 hangUp
  56. **【函数功能】 操作中挂机(命令方式)
  57. **【参数】
  58. **【返回值】
  59. ****************************************************************/
  60. bool CMuteReq::hangUp( long InstanceHangUp )
  61. {
  62. LOGGER(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{LineReq}: 分机[%lu]因挂机取消静音"), m_pHostLine->lineId());
  63. m_InstanceCancel = InstanceHangUp;
  64. return CMC::GetInstance().dropCall(m_pHostLine->devId(), false);
  65. }
  66. /*****************************************************************
  67. **【函数名称】 end
  68. **【函数功能】 操作完成
  69. **【参数】 IsSucceed 操作是否成功
  70. lpData 随路数据
  71. **【返回值】
  72. ****************************************************************/
  73. void CMuteReq::end( bool IsSucceed, LPCTSTR lpData )
  74. {
  75. // 返回执行结果
  76. if(m_InstanceCancel != 0)
  77. {
  78. m_pParent->notifyReqResult(m_ReqPdu, m_InstanceCancel, !IsSucceed, lpData);
  79. } // end if
  80. m_pParent->onLineReqEnd(this, IsSucceed, lpData);
  81. }
  82. /*****************************************************************
  83. **【函数名称】 onDevChEvent
  84. **【函数功能】 线路向上层发送的设备主动事件
  85. **【参数】 pEventLine 触发事件的线路
  86. EvtType 事件类型
  87. lpContent 事件内容
  88. **【返回值】
  89. *****************************************************************/
  90. void CMuteReq::onDevChEvent( CVirtualProxy* pEventLine, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent )
  91. {
  92. // TODO: do nothing
  93. }
  94. /*****************************************************************
  95. **【函数名称】 onLineStateChanged
  96. **【函数功能】 线路状态变化事件响应接口
  97. **【参数】 pEventLine 状态变化的线路实体指针
  98. LineState 线路当前状态
  99. Call 主呼叫ID
  100. SubCall 子呼叫ID
  101. lpCallerNum 主叫号码
  102. lpCalleeNum 被叫号码
  103. **【返回值】
  104. ****************************************************************/
  105. void CMuteReq::onLineStateChanged( CVirtualProxy* pEventLine, VIRTUAL_LINE_STATE LineState, long Call, long SubCall, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum )
  106. {
  107. // 正在放音时外线挂机
  108. if(LineState == VIRTUAL_LINE_STATE_FREE)
  109. end(false, NULL);
  110. }