| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #pragma once
- #include "FsLinkInc.h"
- #include "DevInfoInc.h"
- #include <map>
- #include <mutex>
- class VirtualChan;
- class COperation;
- class COperationReactor
- {
- public:
- static COperationReactor* GetInstance() { return &instance; };
- bool procOperation(long Instance, uint32_t OpType, uint32_t ResID, LineOpParam* pParam);
- // 操作相关事件处理
- void onOpProcess(long Instance, uint32_t HostChanNo, uint32_t AssoChanNo, DEV_RES_TYPE AssoChanType, std::string CallerNum, std::string CalleeNum); // 操作执行进展
- void onOpResult(long Instance, bool IsSucceed);
- void onOpResult(long Instance, COperation* pOp, bool IsSucceed, std::string DestNum, std::string CurOpType="");
- void onOpFromDev(VirtualChan* pChan, DEV_OP OpType, std::string CallerNum, std::string CalleeNum); // 手动外呼
-
- bool onExtenCallFromDev(VirtualChan* pHostChan, PCHAN_EVENT_NOTIFY pNotify); // 设备直接操作的处理
- void onEslEvtBgJobDone(PBG_JOB_NOTIFY pNotify);
- virtual void onEslEvtChanState(long OpInstance, VirtualChan* pChan);
- private:
- COperationReactor();
- ~COperationReactor();
- COperationReactor(const COperationReactor&)=default;
- COperationReactor& operator = (const COperationReactor&) = default;
- void __addOperation(COperation* pOperation);
- bool __delOperation(COperation* pOperation);
- COperation* __getOperation(long OpId);
- bool __execOp(COperation* pOp, LineOpParam* pParam); // 执行OP
- // 线路操作分类处理
- bool __procOpMakeCall(long Instance, uint32_t ResID, LineOpParam* pParam); // 外呼
- bool __procOpHangUp(long Instance, uint32_t ResID, LineOpParam* pParam); // 挂机
- bool __procOpTransfer(long Instance, uint32_t ResID, LineOpParam* pParam); // 呼叫转移
- bool __procOpMeeting(long Instance, uint32_t ResID, LineOpParam* pParam); // 单步会议
- bool __procOpHold(long Instance, uint32_t ResID, LineOpParam* pParam); // 通话保持
- bool __procOpTakeBack(long Instance, uint32_t ResID, LineOpParam* pParam); // 通话接回
- bool __procOpMuteOn(long Instance, uint32_t ResID, LineOpParam* pParam); // 静音启动
- bool __procOpMuteOff(long Instance, uint32_t ResID, LineOpParam* pParam); // 静音结束
- bool __procOpListen(long Instance, uint32_t ResID, LineOpParam* pParam); // 监听
- bool __procOpInsert(long Instance, uint32_t ResID, LineOpParam* pParam); // 强插
- bool __procOpInstead(long Instance, uint32_t ResID, LineOpParam* pParam); // 代接
- bool __procOpIntercept(long Instance, uint32_t ResID, LineOpParam* pParam); // 强截
- bool __procOpRecord(long Instance, uint32_t ResID, LineOpParam* pParam); // 录音
- bool __procOpMyd(long Instance, uint32_t ResID, LineOpParam* pParam); // 满意度
- bool __procOpAutoCall(long Instance, uint32_t ResID, LineOpParam* pParam); // 自动外呼
- private:
- static COperationReactor instance;
- std::mutex m_TaskLock;
- std::map<long,COperation*> m_TableOperation;
- };
|