中间件底层,websocket

OpSendDtmf.cpp 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "stdafx.h"
  2. #include "OpSendDtmf.h"
  3. #include "VirtualChan.h"
  4. #include "FsProxy.h"
  5. #include "OperationReactor.h"
  6. COpSendDtmf::COpSendDtmf(COperationReactor * pParent, LONG Instance):COperation(pParent, Instance)
  7. {
  8. }
  9. COpSendDtmf::~COpSendDtmf(void)
  10. {
  11. }
  12. bool COpSendDtmf::attachHostChan(CVirtualChan * pChan)
  13. {
  14. m_pHostChan = pChan;
  15. return true;
  16. }
  17. void COpSendDtmf::detachHostChan(void)
  18. {
  19. m_pHostChan = NULL;
  20. }
  21. bool COpSendDtmf::start(LineOpParam * pParam)
  22. {
  23. if (m_pHostChan == NULL || m_pHostChan->state() != CHAN_LOGIC_STATE_TALKING)
  24. {
  25. return false;
  26. }
  27. m_dtmf.Format("%s",pParam->szParam4);
  28. LOGGER(LOG_LEVEL_NORMAL, _T("{COpSendDtmf}: 通道[%lu]执行通道[%lu]发送按键, DTMF = %s"), pParam->nParam1,m_pHostChan->no(), m_dtmf);
  29. return CFsProxy::GetInstance().sendDtmf(uniqueId(), m_pHostChan->chanId(), m_dtmf);
  30. }
  31. void COpSendDtmf::onBackgroudJobDone(PBG_JOB_NOTIFY pNotify)
  32. {
  33. if (strstr(pNotify->JobBody, ESL_JOB_DONE_RES_FAILED) == NULL)
  34. _end(true);
  35. else
  36. _end(false);
  37. }
  38. void COpSendDtmf::_end(bool IsSucceed)
  39. {
  40. if (IsSucceed)
  41. {
  42. LOGGER(LOG_LEVEL_NORMAL, _T("{COpSendDtmf}: 线路[%lu]发送按键成功, DTMF = %s"), m_pHostChan->no(), m_dtmf);
  43. }
  44. else
  45. {
  46. LOGGER(LOG_LEVEL_WARNING, _T("{COpSendDtmf}: 线路[%lu]发送按键失败, DTMF = %s"), m_pHostChan->no(), m_dtmf);
  47. }
  48. // 返回执行结果
  49. if (m_InstanceCancel != FS_LINK_INSTANCE_INVALID)
  50. m_pParent->onOpResult(m_InstanceCancel, !IsSucceed);
  51. m_pParent->onOpResult(m_Instance, this, IsSucceed);
  52. }