MiddleWares_YiHe 郑州颐和医院随访系统中间件

TrunkBase.cpp 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #include "StdAfx.h"
  2. #include "TrunkBase.h"
  3. #include "DevControl.h"
  4. #include "VsControl.h"
  5. CTrunkBase::CTrunkBase(UINT TrunkId) : m_TrunkId(TrunkId), m_DevLinkCallId(CONST_DEV_LINK_CALL_NULL), m_LineStatus(TRUNK_STATE_FREE)
  6. {
  7. }
  8. /*****************************************************************
  9. **【函数名称】 _setState
  10. **【函数功能】 设置线路当前状态
  11. **【参数】 Flag 状态标识
  12. **【返回值】
  13. ****************************************************************/
  14. void CTrunkBase::_setState( TRUNK_STATE NewState, int Flag )
  15. {
  16. // 事件过滤
  17. if(m_LineStatus == NewState) return;
  18. // 保存当前状态
  19. m_LineStatus = NewState;
  20. // 线路空闲的后续处理
  21. if(m_LineStatus == TRUNK_STATE_FREE)
  22. _onFree(Flag);
  23. // 通知线路状态变化事件
  24. CString strTrunkId;
  25. strTrunkId.Format("%lu", m_TrunkId);
  26. CDevControl::GetInstance().onEventResState(DEV_RES_TYPE_TRUNK, strTrunkId, m_LineStatus, m_CallerNum, m_CalleeNum);
  27. }
  28. /*****************************************************************
  29. **【函数名称】 _onFree
  30. **【函数功能】 线路空闲的后续处理
  31. **【参数】 Flag 主动挂机还是被动挂机
  32. **【返回值】
  33. ****************************************************************/
  34. void CTrunkBase::_onFree( int Flag )
  35. {
  36. // 清空主被叫号码
  37. m_CallerNum = _T("");
  38. m_CalleeNum = _T("");
  39. CDevControl::GetInstance().onEventLog(LOG_LEVEL_NORMAL, _T("{Trunk_%d}: 线路空闲"), m_TrunkId);
  40. // 通知录音VP台停止录音
  41. CVsControl::GetInstance().notifyLineFree(m_TrunkId, DEV_RES_TYPE_TRUNK);
  42. }
  43. /*****************************************************************
  44. **【函数名称】 regist
  45. **【函数功能】 注册线路
  46. **【参数】
  47. **【返回值】
  48. ****************************************************************/
  49. void CTrunkBase::regist( void )
  50. {
  51. CString strTrunkId;
  52. strTrunkId.Format(_T("%lu"), m_TrunkId);
  53. // 通知业务逻辑线路创建事件
  54. CDevControl::GetInstance().onEventResDetail(DEV_RES_TYPE_TRUNK, strTrunkId);
  55. CDevControl::GetInstance().onEventResState(DEV_RES_TYPE_TRUNK, strTrunkId, m_LineStatus);
  56. }
  57. /*****************************************************************
  58. **【函数名称】 onDevLinkEventS
  59. **【函数功能】 DEV Link S 事件响应
  60. **【参数】 pInfoS S事件消息内容
  61. **【返回值】
  62. ****************************************************************/
  63. void CTrunkBase::onDevLinkEventS( DevLinkInfoS* pInfoS )
  64. {
  65. // 是否为外线来电呼入
  66. if(m_DevLinkCallId == CONST_DEV_LINK_CALL_NULL && pInfoS->nResStatus == TRUNK_STATE_ALERTING) // 外线来电
  67. {
  68. CDevControl::GetInstance().onEventLog(LOG_LEVEL_NORMAL, _T("{Trunk_%s}: 应答外线来电, CallerNum = %s, CalleeNum = %s, DevLinkCallId = %ld"),
  69. pInfoS->szResId,
  70. pInfoS->szCallerNum,
  71. pInfoS->szCalleeNum,
  72. pInfoS->nDevLinkCallId);
  73. } // end if
  74. // 更新数据
  75. m_CallerNum = pInfoS->szCallerNum;
  76. m_CalleeNum = pInfoS->szCalleeNum;
  77. m_DevLinkCallId = pInfoS->nDevLinkCallId;
  78. // 更新线路状态
  79. _setState((TRUNK_STATE)pInfoS->nResStatus, pInfoS->nFlag);
  80. }
  81. /*****************************************************************
  82. **【函数名称】 onDevLinkEventA
  83. **【函数功能】 DEV Link A 事件响应
  84. **【参数】 DevLinkCallId DevLink CallId
  85. **【返回值】
  86. ****************************************************************/
  87. void CTrunkBase::onDevLinkEventA( int DevLinkCallId )
  88. {
  89. }
  90. /*****************************************************************
  91. **【函数名称】 onDevLinkEventD
  92. **【函数功能】 DEV Link D 事件响应
  93. **【参数】 DevLinkCallId DevLink CallId
  94. **【返回值】
  95. ****************************************************************/
  96. void CTrunkBase::onDevLinkEventD( int DevLinkCallId )
  97. {
  98. m_DevLinkCallId = CONST_DEV_LINK_CALL_NULL;
  99. // 初始化线路状态
  100. _setState(TRUNK_STATE_FREE, 0);
  101. }