linux版本中间件

OperationReactor.h 3.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. void releaseOpResult(COperation* pOp);
  19. bool onExtenCallFromDev(VirtualChan* pHostChan, PCHAN_EVENT_NOTIFY pNotify); // 设备直接操作的处理
  20. void onEslEvtBgJobDone(PBG_JOB_NOTIFY pNotify);
  21. virtual void onEslEvtChanState(long OpInstance, VirtualChan* pChan);
  22. private:
  23. COperationReactor();
  24. ~COperationReactor();
  25. COperationReactor(const COperationReactor&)=default;
  26. COperationReactor& operator = (const COperationReactor&) = default;
  27. void __addOperation(COperation* pOperation);
  28. bool __delOperation(COperation* pOperation);
  29. COperation* __getOperation(long OpId);
  30. bool __execOp(COperation* pOp, LineOpParam* pParam); // 执行OP
  31. // 线路操作分类处理
  32. bool __procOpMakeCall(long Instance, uint32_t ResID, LineOpParam* pParam); // 外呼
  33. bool __procOpHangUp(long Instance, uint32_t ResID, LineOpParam* pParam); // 挂机
  34. bool __procOpTransfer(long Instance, uint32_t ResID, LineOpParam* pParam); // 呼叫转移
  35. bool __procOpMeeting(long Instance, uint32_t ResID, LineOpParam* pParam); // 单步会议
  36. bool __procOpMultiMeeting(long Instance, uint32_t ResID, LineOpParam* pParam); // 多步会议
  37. bool __procOpMultiMeetingTakeBack(long Instance, uint32_t ResID, LineOpParam* pParam); // 多步会议接回
  38. bool __procOpHold(long Instance, uint32_t ResID, LineOpParam* pParam); // 通话保持
  39. bool __procOpTakeBack(long Instance, uint32_t ResID, LineOpParam* pParam); // 通话接回
  40. bool __procOpMuteOn(long Instance, uint32_t ResID, LineOpParam* pParam); // 静音启动
  41. bool __procOpMuteOff(long Instance, uint32_t ResID, LineOpParam* pParam); // 静音结束
  42. bool __procOpListen(long Instance, uint32_t ResID, LineOpParam* pParam); // 监听
  43. bool __procOpInsert(long Instance, uint32_t ResID, LineOpParam* pParam); // 强插
  44. bool __procOpInstead(long Instance, uint32_t ResID, LineOpParam* pParam); // 代接
  45. bool __procOpIntercept(long Instance, uint32_t ResID, LineOpParam* pParam); // 强截
  46. bool __procOpRecord(long Instance, uint32_t ResID, LineOpParam* pParam); // 录音
  47. bool __procOpMyd(long Instance, uint32_t ResID, LineOpParam* pParam); // 满意度
  48. bool __procOpAutoCall(long Instance, uint32_t ResID, LineOpParam* pParam); // 自动外呼
  49. bool __procOpForceAgentState(long Instance, uint32_t ResID, LineOpParam* pParam); // 强制状态控制
  50. bool __procOpSendDtmf(long Instance, uint32_t ResID, LineOpParam* pParam); // 发送按键
  51. private:
  52. static COperationReactor instance;
  53. std::mutex m_TaskLock;
  54. std::map<long,COperation*> m_TableOperation;
  55. };