#pragma once #include "FsLinkInc.h" #include #include using namespace std; class CFsProxy; class COperation; class VirtualChan { public: VirtualChan(CFsProxy* pParent, uint32_t ChanNo); virtual ~VirtualChan(); void setRecordFile(const std::string& strFileName); // 设置坐席录音文件名 const std::string& recordFile() const { return m_RecordFile; } // 获取当前线路录音文件名 uint32_t no(void) const { return m_No; } CHAN_LOGIC_STATE state(void) const { return m_State; } bool isInMeeting(void) const { return m_IsInMeeting; } bool& isInMeeting(void) { return m_IsInMeeting; } COperation* currOp(void) const { return m_pOperation; } string chanId(void) const { return m_ChanId; } string sessionId(void) const { return m_SessionId; } string callerNum(void) const { return m_CallerNum; } string calleeNum(void) const { return m_CalleeNum; } string opNumber(void) const { return m_OpNumber; } string& opNumber(void) { return m_OpNumber; } bool bindOp(COperation* pOp); bool releaseOp(COperation* pOp); // 待实现接口 virtual DEV_RES_TYPE type(void) const = 0; // 通道类型 virtual bool isFree(void) const = 0; virtual bool isVoid(void) const = 0; virtual void regist(void) const = 0; virtual void onChanEvent(PCHAN_EVENT_NOTIFY pNotify) = 0; virtual void onSessionChanEvent(VirtualChan* pChanSession, PCHAN_EVENT_NOTIFY pNotify) = 0; virtual void onChanHold(EVENT_HOLD_TYPE HoldType) {}; protected: void _setSession(string SessionId, string ChanId); void _reset(void); protected: CFsProxy* m_pParent; // 宿主类 uint32_t m_No; // 通道号 CHAN_LOGIC_STATE m_State; // 状态 bool m_IsInMeeting; // 是否在会议中 COperation* m_pOperation; // 关联操作 string m_CallerNum; // 主叫号码 string m_CalleeNum; // 被叫号码 string m_OpNumber; // 通道操作号码 private: string m_ChanId; // 通道动态ID string m_SessionId; // 会话ID std::string m_RecordFile; // 录音路径 };