中航光电的中间件仓库

TaskAgentHungUp.cpp 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include "stdafx.h"
  2. #include "TaskAgentHungUp.h"
  3. #include "LineHolder.h"
  4. #include "LogicLine.h"
  5. #include "CtiCore.h"
  6. #include "SessionHolder.h"
  7. #include "CallSession.h"
  8. CTaskAgentHungUp::CTaskAgentHungUp(CPduEntity &PduEntity) : CTask(PduEntity)
  9. {
  10. }
  11. CTaskAgentHungUp::~CTaskAgentHungUp(void)
  12. {
  13. }
  14. /*****************************************************************
  15. **【函数名称】 DoTask
  16. **【函数功能】 Task处理
  17. **【参数】
  18. **【返回值】 void
  19. ****************************************************************/
  20. BOOL CTaskAgentHungUp::DoTask()
  21. {
  22. // 显示日志
  23. ShowLog();
  24. // 校验
  25. if(!Verify()) return FALSE;
  26. // 设置当前操作类型
  27. m_pCurrLine->opType() = PDU_CMD_AGENT_HANGUP;
  28. CCallSession* pSession = CSessionHolder::GetInstance().findSession(m_pCurrLine->callId());
  29. if (pSession != NULL && pSession->lineCount() == 2)
  30. {
  31. CLogicLine* pAssoLine = m_pCurrLine->assoLine();
  32. if (pAssoLine != NULL)
  33. {
  34. CCtiCore::GetInstance().getDevLink().exec((long)this, LINE_OP_HANG_UP, pAssoLine->lineId(), NULL);
  35. }
  36. }
  37. // 向底层设备发送挂机命令
  38. return CCtiCore::GetInstance().getDevLink().exec((long)this, LINE_OP_HANG_UP, m_pCurrLine->lineId(), NULL);
  39. }
  40. /*****************************************************************
  41. **【函数名称】 Verify
  42. **【函数功能】 校验
  43. **【参数】
  44. **【返回值】 BOOL
  45. ****************************************************************/
  46. BOOL CTaskAgentHungUp::Verify()
  47. {
  48. // 线路绑定校验
  49. if(!_bindLogicLine(m_CurrCmd.GetDataUInt(1)))
  50. return FALSE;
  51. if (m_pCurrLine->status() == INNER_STATE_FREE || m_pCurrLine->status() == INNER_STATE_DISABLED)
  52. {
  53. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_WARNING, _T("{Task}: 线路[%d]执行座席挂机任务校验时失败:线路当前状态空闲"), m_pCurrLine->lineId());
  54. return FALSE;
  55. }
  56. if (m_pCurrLine->status() == INNER_STATE_ALERTING)
  57. {
  58. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_WARNING, _T("{Task}: 线路[%d]执行座席挂机任务校验时失败:线路当前来电振铃中"), m_pCurrLine->lineId());
  59. return FALSE;
  60. }
  61. return TRUE;
  62. }
  63. /*****************************************************************
  64. **【函数名称】 ShowLog
  65. **【函数功能】 显示日志
  66. **【参数】
  67. **【返回值】 void
  68. ****************************************************************/
  69. void CTaskAgentHungUp::ShowLog()
  70. {
  71. // 显示日志
  72. ILogger::getInstance().log(LOG_CLASS_SOCKET, LOG_LEVEL_NORMAL, _T("AGENT->CTI, CMD = [座席挂机], Exten = %d"), m_CurrCmd.GetDataUInt(1));
  73. }