中间件底层,websocket

LogicLine.cpp 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include "StdAfx.h"
  2. #include "LogicLine.h"
  3. #include "StatisticsMgr.h"
  4. #include "SessionHolder.h"
  5. #include "CallSession.h"
  6. CLogicLine::CLogicLine(UINT ResId) : m_LineId(ResId), m_LineStatus(INNER_STATE_DISABLED), m_CallId(0), m_HoldCallId(0),
  7. m_CurrentOpType(PDU_CMD_UNKNOWN), m_CurrentOpResult(TRUE), m_TaskIdBinded(TASK_ID_INVALID), m_CallerNum(_T("")), m_CalleeNum(_T("")), m_RecordFile(_T("")),m_ActionID(2), m_IsMeeting(false), m_IsFirstTrunk(false)
  8. {
  9. }
  10. /*****************************************************************
  11. **【函数名称】 __reportLineStatus
  12. **【函数功能】 统计线路状态变化
  13. **【参数】
  14. **【返回值】
  15. ****************************************************************/
  16. void CLogicLine::_reportLineStatus( void )
  17. {
  18. if(m_CallId == 0 || m_HoldCallId != 0) return;
  19. // 状态变化统计
  20. T_EvtStateChanged repInfo;
  21. memset(&repInfo, 0, sizeof(repInfo));
  22. repInfo.nLineState = m_LineStatus; // 状态
  23. repInfo.nAgentId = getAgentNum(); // 工号
  24. lstrcpy(repInfo.szCallerNum, m_CallerNum); // 被叫
  25. lstrcpy(repInfo.szFileName, m_RecordFile); // 录音文件
  26. CStatisticsMgr::GetInstance().onCallDetail(m_CallId, REP_EVENT_STATE_CHANGED, m_LineId, &repInfo);
  27. }
  28. /*****************************************************************
  29. **【函数名称】 setRecordFile
  30. **【函数功能】 设置坐席录音文件名,录音文件名在挂机前不能被修改
  31. **【参数】 strFileName: 录音文件名
  32. **【返回值】
  33. ****************************************************************/
  34. void CLogicLine::setRecordFile( const CString& strFileName )
  35. {
  36. if(m_RecordFile == "" && strFileName != "")
  37. {
  38. // 设置录音文件名,并向坐席发送
  39. m_RecordFile = strFileName;
  40. pushRecord2ACD();
  41. }
  42. // 统计 REP_EVENT_REC_BEGIN
  43. T_EvtRecBegin repInfo;
  44. memset(&repInfo, 0, sizeof(repInfo));
  45. lstrcpy(repInfo.szFileName, m_RecordFile);
  46. CStatisticsMgr::GetInstance().onCallDetail(m_CallId, REP_EVENT_REC_BEGIN, m_LineId, &repInfo);
  47. }
  48. /*****************************************************************
  49. **【函数名称】 resetLine
  50. **【函数功能】 线路重置
  51. **【参数】
  52. **【返回值】
  53. ****************************************************************/
  54. void CLogicLine::resetLine()
  55. {
  56. ILogger::getInstance().log(LOG_CLASS_DEV, LOG_LEVEL_NORMAL, _T("{CLogicLine}: 执行线路[%lu]重置"), m_LineId);
  57. // 清除线路信息
  58. m_CallId = 0;
  59. m_RecordFile = _T("");
  60. m_CallerNum = _T("");
  61. m_CalleeNum = _T("");
  62. m_CurrentOpType = PDU_CMD_UNKNOWN;
  63. m_TaskIdBinded = TASK_ID_INVALID;
  64. m_ActionID = 2;
  65. m_IsMeeting = false;
  66. m_IsFirstTrunk = false;
  67. }
  68. /*****************************************************************
  69. **【函数名称】 assoLine
  70. **【函数功能】 获取对端线路指针
  71. **【参数】
  72. **【返回值】 对端线路指针
  73. ****************************************************************/
  74. CLogicLine* CLogicLine::assoLine()
  75. {
  76. CCallSession* pSession = CSessionHolder::GetInstance().findSession(m_CallId);
  77. if(pSession == NULL)
  78. return NULL;
  79. return pSession->getAssoLine(this);
  80. }
  81. void CLogicLine::SetActionID()
  82. {
  83. m_ActionID+=2;
  84. }