hd

VirtualChan.cpp 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #include "StdAfx.h"
  2. #include "VirtualChan.h"
  3. #include "Operation.h"
  4. #include "FsProxy.h"
  5. CVirtualChan::CVirtualChan(CFsProxy* pParent, UINT ChanNo) : m_pParent(pParent), m_No(ChanNo), m_State(CHAN_LOGIC_STATE_FREE), m_IsInMeeting(false), m_pOperation(NULL)
  6. {
  7. ASSERT(m_pParent != NULL);
  8. }
  9. CVirtualChan::~CVirtualChan(void)
  10. {
  11. }
  12. /*****************************************************************
  13. **【函数名称】 _setSession
  14. **【函数功能】 设置通道会话环境
  15. **【参数】
  16. **【返回值】
  17. ****************************************************************/
  18. void CVirtualChan::_setSession( LPCTSTR SessionId, LPCTSTR ChanId )
  19. {
  20. if(SessionId != NULL)
  21. m_SessionId = SessionId;
  22. else
  23. m_SessionId = _T("");
  24. if(ChanId != NULL)
  25. {
  26. m_ChanId = ChanId;
  27. m_pParent->regBusyChan(this);
  28. }
  29. else
  30. {
  31. m_pParent->unregBusyChan(this);
  32. m_ChanId = _T("");
  33. }
  34. }
  35. /*****************************************************************
  36. **【函数名称】 _reset
  37. **【函数功能】 重置通道
  38. **【参数】
  39. **【返回值】
  40. ****************************************************************/
  41. void CVirtualChan::_reset( void )
  42. {
  43. LOGGER(LOG_LEVEL_NORMAL, _T("{CVirtualChan}: 执行线路[%lu]重置",m_No));
  44. m_State = CHAN_LOGIC_STATE_FREE;
  45. m_IsInMeeting = false;
  46. m_CalleeNum = _T("");
  47. m_CalleeNum = _T("");
  48. m_ChanId = _T("");
  49. m_SessionId = _T("");
  50. m_OpNumber = _T("");
  51. }
  52. /*****************************************************************
  53. **【函数名称】 bindOp
  54. **【函数功能】 绑定操作
  55. **【参数】
  56. **【返回值】
  57. ****************************************************************/
  58. bool CVirtualChan::bindOp( COperation* pOp )
  59. {
  60. ASSERT(pOp != NULL);
  61. if(pOp == NULL || m_pOperation != NULL)
  62. return false;
  63. m_pOperation = pOp;
  64. return true;
  65. }
  66. /*****************************************************************
  67. **【函数名称】 releaseOp
  68. **【函数功能】 释放操作
  69. **【参数】
  70. **【返回值】
  71. ****************************************************************/
  72. bool CVirtualChan::releaseOp( COperation* pOp )
  73. {
  74. if(m_pOperation != pOp)
  75. return false;
  76. m_pOperation = NULL;
  77. return true;
  78. }
  79. /*****************************************************************
  80. **【函数名称】 onChanDtmf
  81. **【函数功能】 通道DTMF事件处理
  82. **【参数】
  83. **【返回值】
  84. ****************************************************************/
  85. void CVirtualChan::onChanDtmf( LPCTSTR Dtmf )
  86. {
  87. if(m_pOperation != NULL)
  88. m_pOperation->onHostChanDtmf(Dtmf);
  89. else {
  90. // 返回执行结果
  91. LOGGER(LOG_LEVEL_NORMAL, _T("{CVirtualChan}: 线路[%lu],dtmf=%s", m_No, Dtmf));
  92. CDevControl::GetInstance().onEventOpResult(100, m_No, false, Dtmf);
  93. }
  94. }
  95. /*****************************************************************
  96. **【函数名称】 onChanHold
  97. **【函数功能】 通道保持事件处理
  98. **【参数】
  99. **【返回值】
  100. ****************************************************************/
  101. void CVirtualChan::onChanHold( EVENT_HOLD_TYPE HoldType )
  102. {
  103. }