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

CellEnd.cpp 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "StdAfx.h"
  2. #include "CellEnd.h"
  3. #include "NetworkIvr.h"
  4. #include "IvrFlow.h"
  5. #include "FlowDataProvider.h"
  6. IMPLEMENT_CELL_AUTOCREATE(CCellEnd, CELL_NAME_END)
  7. CCellEnd::CCellEnd(void)
  8. {
  9. }
  10. CCellEnd::CCellEnd( CCellEnd & EndCell ) : CCellBase(EndCell)
  11. {
  12. }
  13. CCellEnd::~CCellEnd(void)
  14. {
  15. }
  16. /*****************************************************************
  17. **【函数名称】 Operate
  18. **【函数功能】 节点执行函数
  19. **【参数】
  20. **【返回值】 下一个节点编号
  21. ****************************************************************/
  22. int CCellEnd::operate( void )
  23. {
  24. CString Info;
  25. _getCellInfo(Info);
  26. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("{Cell}: 开始执行[%s]"), Info);
  27. CPduEntity cmdIVREnd(PDU_CMD_IVR_END);
  28. cmdIVREnd.SetDataInt(1, m_pIvrFlow->id());
  29. if(!CNetworkIvr::GetInstance().send(cmdIVREnd))
  30. {
  31. ILogger::getInstance().log(LOG_CLASS_SOCKET, LOG_LEVEL_NORMAL, _T("{Cell}: 执行[%s]出错, 向CTI发送数据失败"), Info);
  32. }
  33. return CELL_OP_END;
  34. }
  35. /*****************************************************************
  36. **【函数名称】 copy
  37. **【函数功能】 拷贝自身
  38. **【参数】
  39. **【返回值】 拷贝副本
  40. ****************************************************************/
  41. CCellBase * CCellEnd::copy( void )
  42. {
  43. CCellBase * pCellBase = new CCellEnd(*this);
  44. return pCellBase;
  45. }
  46. /*****************************************************************
  47. **【函数名称】 fillData
  48. **【函数功能】 节点解析,填充数据
  49. **【参数】 Provider:数据提供器
  50. **【返回值】 成功true,失败false
  51. ****************************************************************/
  52. bool CCellEnd::fillData( IFlowDataProvider& Provider )
  53. {
  54. CString Data;
  55. do
  56. {
  57. if(!Provider.getData(CELL_ATTRIBUTE_POS, Data))
  58. {
  59. Data = _T("节点号");
  60. break;
  61. }
  62. else
  63. {
  64. sscanf_s(Data, _T("%d"), &m_Pos);
  65. if(m_Pos < 1)
  66. {
  67. Data = _T("节点号");
  68. break;
  69. }
  70. }
  71. Provider.getData(CELL_ATTRIBUTE_NOTE, m_Note);
  72. return true;
  73. } while (false);
  74. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_ERROR, _T("{Cell}: 节点[%s]解析失败, '%s'错误"), CELL_NAME_END, Data);
  75. return false;
  76. }