linux版本中间件

Operation.h 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #pragma once
  2. #include "FsLinkInc.h"
  3. #include "DevInfoInc.h"
  4. #include "Util.h"
  5. #include "SqlWrite.h"
  6. class COperationReactor;
  7. class VirtualChan;
  8. class COperation
  9. {
  10. public:
  11. COperation(COperationReactor* pParent, long Instance);
  12. virtual ~COperation();
  13. virtual LINE_OP type(void) const = 0;
  14. long uniqueId(void) const { return reinterpret_cast<long>(this); }
  15. // 关联操作
  16. virtual bool attachHostChan(VirtualChan* pChan); // 设置主控通道的关联
  17. virtual void detachHostChan(void); // 取消通道关联
  18. // 控制接口
  19. virtual bool start(LineOpParam* pParam) = 0; // 操作启动(命令方式)
  20. virtual bool start(PCHAN_EVENT_NOTIFY pNotify); // 操作启动(命令方式)
  21. virtual bool cancel(long InstanceCancel); // 取消当前操作
  22. virtual bool hangup(long InstanceHangup); // 操作中挂机
  23. virtual void setOpInstance(long Instance); // 设置调用标识
  24. virtual void clean() {};
  25. // 事件响应接口
  26. virtual void onBackgroudJobDone(PBG_JOB_NOTIFY pNotify); // 后台命令执行结束事件处理
  27. virtual void onAssoChanStateUpdated(VirtualChan* pAssoChan); // 相关通道状态更新处理
  28. virtual void onHostChanStateUpdated(VirtualChan* pHostChan); // 关联通道状态更新处理
  29. virtual void onSessionChanStateUpdated(VirtualChan* pChan); // 同会话中通道状态更新处理
  30. protected:
  31. COperationReactor* m_pParent; // 宿主类
  32. VirtualChan* m_pHostChan; // 当前操作的主控通道
  33. long m_Instance; // 调用标识,用于回传
  34. long m_InstanceCancel; // 启动取消操作的调用标识
  35. protected:
  36. std::string toSql(bool isSuccess,std::string opDesc) {
  37. Format fmt("insert into rep_op_record(uuid,caller_agent,caller,callee_agent,callee,is_success,op_type,op_desc,op_time) values('%s','%s','%s','%s','%s',%d,%d,'%s','%s') ");
  38. fmt %m_SessionId %m_CallerAgent %m_Caller %m_CalleeAgent %m_Callee %isSuccess %type() % opDesc %m_OpTime;
  39. return fmt.str();
  40. }
  41. protected:
  42. std::string m_SessionId; // 会话id
  43. std::string m_CallerAgent;
  44. std::string m_Caller;
  45. std::string m_CalleeAgent;
  46. std::string m_Callee;
  47. std::string m_OpTime; //操作时间
  48. };