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

VirtualProxy.cpp 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include "StdAfx.h"
  2. #include "VirtualProxy.h"
  3. #include "ReqBase.h"
  4. CVirtualProxy::CVirtualProxy(CProxyShell* pParent, CRDRID DevId) :
  5. m_pParent(pParent), m_DevId(DevId), m_pLineReq(NULL), m_State(VIRTUAL_LINE_STATE_FREE), m_ActiveCallId(0), m_IsInvalid(false)
  6. {
  7. }
  8. /*****************************************************************
  9. **【函数名称】 isIdle
  10. **【函数功能】 代理是否线路空闲
  11. **【参数】
  12. **【返回值】
  13. ****************************************************************/
  14. bool CVirtualProxy::isIdle( void ) const
  15. {
  16. if(m_State == VIRTUAL_LINE_STATE_FREE && m_ActiveCallId == 0)
  17. return true;
  18. else
  19. return false;
  20. }
  21. /*****************************************************************
  22. **【函数名称】 onDevChEvent
  23. **【函数功能】 物理线路向上层发送的设备主动事件
  24. **【参数】 nEvtType 事件类型
  25. lpContent 事件内容
  26. **【返回值】
  27. *****************************************************************/
  28. void CVirtualProxy::onDevChEvent( DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent )
  29. {
  30. if(m_pLineReq != NULL)
  31. m_pLineReq->onDevChEvent(this, EvtType, lpContent);
  32. }
  33. /*****************************************************************
  34. **【函数名称】 onLineStateChanged
  35. **【函数功能】 线路状态变化事件处理
  36. **【参数】 nCall 主会话ID
  37. nSubCall 子会话ID
  38. nStatus 线路基本状态
  39. lpCallerNum 主叫号码
  40. lpCalleeNum 被叫号码
  41. **【返回值】
  42. ****************************************************************/
  43. void CVirtualProxy::onLineStateChanged( long Call, long SubCall, VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum )
  44. {
  45. // 子呼叫空闲状态过滤(只处理操作)
  46. if(m_pLineReq != NULL && SubCall != SESSION_INVALID_SUB_CALL && State == VIRTUAL_LINE_STATE_FREE)
  47. {
  48. m_pLineReq->onLineStateChanged(this, State, Call, SubCall, lpCallerNum, lpCalleeNum);
  49. return;
  50. } // end if
  51. // 处理线路状事件
  52. _procLineState(Call, SubCall, State, lpCallerNum, lpCalleeNum);
  53. // 保存呼叫信息
  54. m_State = State;
  55. m_CallerNum = lpCallerNum;
  56. m_CalleeNum = lpCalleeNum;
  57. m_ActiveCallId = (State == VIRTUAL_LINE_STATE_FREE) ? SESSION_INVALID_CALL : Call;
  58. // 委托操作执行
  59. if(m_pLineReq != NULL)
  60. m_pLineReq->onLineStateChanged(this, State, Call, SubCall, lpCallerNum, lpCalleeNum);
  61. // 通知业务逻辑线路状态变化事件
  62. _notifyLineState();
  63. }
  64. /*****************************************************************
  65. **【函数名称】 onNewCall
  66. **【函数功能】 线路进入会话事件
  67. **【参数】 nCall 线路当前所属的主会话ID
  68. nSubCall 线路当前所属的子会话ID
  69. **【返回值】
  70. ****************************************************************/
  71. void CVirtualProxy::onNewCall( long Call, long SubCall )
  72. {
  73. m_ActiveCallId = Call;
  74. }