中间件标准版5.1git,去除基础模块

TaskAgentHungUp.cpp 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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->lineCount() == 2) {//2018.5.25.安图要求分机挂时,挂外线。
  30. CLogicLine* pAssoLine = m_pCurrLine->assoLine();
  31. if (pAssoLine != NULL){
  32. CCtiCore::GetInstance().getDevLink().exec((long)this, LINE_OP_HANG_UP, pAssoLine->lineId(), NULL);
  33. }
  34. }
  35. // 向底层设备发送挂机命令
  36. return CCtiCore::GetInstance().getDevLink().exec((long)this, LINE_OP_HANG_UP, m_pCurrLine->lineId(), NULL);
  37. }
  38. /*****************************************************************
  39. **【函数名称】 Verify
  40. **【函数功能】 校验
  41. **【参数】
  42. **【返回值】 BOOL
  43. ****************************************************************/
  44. BOOL CTaskAgentHungUp::Verify()
  45. {
  46. // 线路绑定校验
  47. if(!_bindLogicLine(m_CurrCmd.GetDataUInt(1)))
  48. return FALSE;
  49. if (m_pCurrLine->status() == INNER_STATE_FREE || m_pCurrLine->status() == INNER_STATE_DISABLED)
  50. {
  51. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_WARNING, _T("{Task}: 线路[%d]执行座席挂机任务校验时失败:线路当前状态空闲"), m_pCurrLine->lineId());
  52. return FALSE;
  53. }
  54. if (m_pCurrLine->status() == INNER_STATE_ALERTING)
  55. {
  56. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_WARNING, _T("{Task}: 线路[%d]执行座席挂机任务校验时失败:线路当前来电振铃中"), m_pCurrLine->lineId());
  57. return FALSE;
  58. }
  59. return TRUE;
  60. }
  61. /*****************************************************************
  62. **【函数名称】 ShowLog
  63. **【函数功能】 显示日志
  64. **【参数】
  65. **【返回值】 void
  66. ****************************************************************/
  67. void CTaskAgentHungUp::ShowLog()
  68. {
  69. // 显示日志
  70. ILogger::getInstance().log(LOG_CLASS_SOCKET, LOG_LEVEL_NORMAL, _T("AGENT->CTI, CMD = [座席挂机], Exten = %d"), m_CurrCmd.GetDataUInt(1));
  71. }