linux版本中间件

OperationReactor.h 2.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #pragma once
  2. #include "FsLinkInc.h"
  3. #include "DevInfoInc.h"
  4. #include <map>
  5. #include <mutex>
  6. class VirtualChan;
  7. class COperation;
  8. class COperationReactor
  9. {
  10. public:
  11. static COperationReactor* GetInstance() { return &instance; };
  12. bool procOperation(long Instance, uint32_t OpType, uint32_t ResID, LineOpParam* pParam);
  13. // 操作相关事件处理
  14. void onOpProcess(long Instance, uint32_t HostChanNo, uint32_t AssoChanNo, DEV_RES_TYPE AssoChanType, std::string CallerNum, std::string CalleeNum); // 操作执行进展
  15. void onOpResult(long Instance, bool IsSucceed);
  16. void onOpResult(long Instance, COperation* pOp, bool IsSucceed, std::string DestNum, std::string CurOpType="");
  17. void onOpFromDev(VirtualChan* pChan, DEV_OP OpType, std::string CallerNum, std::string CalleeNum); // 手动外呼
  18. bool onExtenCallFromDev(VirtualChan* pHostChan, PCHAN_EVENT_NOTIFY pNotify); // 设备直接操作的处理
  19. void onEslEvtBgJobDone(PBG_JOB_NOTIFY pNotify);
  20. virtual void onEslEvtChanState(long OpInstance, VirtualChan* pChan);
  21. private:
  22. COperationReactor();
  23. ~COperationReactor();
  24. COperationReactor(const COperationReactor&)=default;
  25. COperationReactor& operator = (const COperationReactor&) = default;
  26. void __addOperation(COperation* pOperation);
  27. bool __delOperation(COperation* pOperation);
  28. COperation* __getOperation(long OpId);
  29. bool __execOp(COperation* pOp, LineOpParam* pParam); // 执行OP
  30. // 线路操作分类处理
  31. bool __procOpMakeCall(long Instance, uint32_t ResID, LineOpParam* pParam); // 外呼
  32. bool __procOpHangUp(long Instance, uint32_t ResID, LineOpParam* pParam); // 挂机
  33. bool __procOpTransfer(long Instance, uint32_t ResID, LineOpParam* pParam); // 呼叫转移
  34. bool __procOpMeeting(long Instance, uint32_t ResID, LineOpParam* pParam); // 单步会议
  35. bool __procOpHold(long Instance, uint32_t ResID, LineOpParam* pParam); // 通话保持
  36. bool __procOpTakeBack(long Instance, uint32_t ResID, LineOpParam* pParam); // 通话接回
  37. bool __procOpMuteOn(long Instance, uint32_t ResID, LineOpParam* pParam); // 静音启动
  38. bool __procOpMuteOff(long Instance, uint32_t ResID, LineOpParam* pParam); // 静音结束
  39. bool __procOpListen(long Instance, uint32_t ResID, LineOpParam* pParam); // 监听
  40. bool __procOpInsert(long Instance, uint32_t ResID, LineOpParam* pParam); // 强插
  41. bool __procOpInstead(long Instance, uint32_t ResID, LineOpParam* pParam); // 代接
  42. bool __procOpIntercept(long Instance, uint32_t ResID, LineOpParam* pParam); // 强截
  43. bool __procOpRecord(long Instance, uint32_t ResID, LineOpParam* pParam); // 录音
  44. bool __procOpMyd(long Instance, uint32_t ResID, LineOpParam* pParam); // 满意度
  45. bool __procOpAutoCall(long Instance, uint32_t ResID, LineOpParam* pParam); // 自动外呼
  46. private:
  47. static COperationReactor instance;
  48. std::mutex m_TaskLock;
  49. std::map<long,COperation*> m_TableOperation;
  50. };