/************************************************************************* 【文件名】 LineReq.h 【功能模块和目的】 线路请求基类头文件 【开发者及日期】 郑石诺 2015/03/24 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once class CProxyShell; class CVirtualProxy; /************************************************************************* 【类名】 CLineReq 【功能】 【接口说明】 线路请求基类 【开发者及日期】 郑石诺 2015/03/24 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CReqBase { public: CReqBase(CProxyShell* pParent, CPduEntity& ReqPdu); virtual ~CReqBase(void) = 0 {} // 事件响应接口 virtual void onDevChEvent(CVirtualProxy* pEventLine, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent) = 0; // 线路向上层发送的设备主动事件 virtual void onLineStateChanged(CVirtualProxy* pEventLine, VIRTUAL_LINE_STATE LineState, long Call, long SubCall, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum) = 0; // 线路状态变化事件 // 关联操作 void attachHostLine(CVirtualProxy* pLine); // 设置主控线路的关联 void detachHostLine(); // 取消线路关联 // 操作主控方法 virtual bool request(void) = 0; // 操作启动(命令方式) virtual bool request(LPCTSTR lpContent) = 0; // 操作启动(话机方式) virtual bool cancel(long InstanceCancel) = 0; // 取消当前操作 virtual bool hangUp(long InstanceHangUp) = 0; // 操作中挂机 virtual bool resume(long InstanceResume, int Data) // 继续执行当前操作 { return false; } virtual void end(bool IsSucceed, LPCTSTR lpData) = 0; // 操作完成(注:此操作之后只能调用 return 语句) virtual void setAssoInfo(CPduEntity& a_Req) { } // 设置关联信息 long callInstance(void) const { return m_InstanceCall; } CPduEntity& comeFrom(void) { return m_ReqPdu; } protected: // 通知操作进展事件 void _notifyOpProcess(UINT HostLine, UINT AssoLine, DEV_RES_TYPE AssoLineType, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum); protected: CProxyShell* m_pParent; // 线路操作管理类 CVirtualProxy* m_pHostLine; // 主控线路 long m_InstanceCall; // 业务逻辑调用标识 long m_InstanceCancel; // 业务逻辑取消调用标识 CPduEntity m_ReqPdu; };