/************************************************************************* 【文件名】 Task.h 【功能模块和目的】 Task基类头文件 【开发者及日期】 郑石诺 2015/01/15 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once class CLogicLine; /************************************************************************* 【类名】 CTask 【功能】 【接口说明】 Task基类 【开发者及日期】 郑石诺 2015/01/15 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CTask { public: CTask(EventDevOperation &DevOpInfo); // 设备产生的Task CTask(CPduEntity &PduEntity); // PDU命令产生的Task virtual ~CTask(void); virtual CString Name(void) const = 0; // 任务名称 int GetAssoLineId(); // 获取Task关联线路Id virtual BOOL OnDevOpResult(EventOpResult &EvtInfo); // 底层线路操作结果 virtual void OnDevOpProcess(EventOpProcess &EvtInfo); // 底层线路操作进展 virtual BOOL OnCmdOperation(CPduEntity &PduEntity); // Task命令处理 virtual BOOL DoTask() = 0; // 任务处理 INT64 TaskTime()const { return m_TaskTime; } // 任务触发时间 2022-10-18 BOOL IsExpire()const { return (time(NULL) - m_TaskTime) > 60 * 60 * 2; } // 2022-10-18 如果该任务存在两个小时还在就删除,正常情况一个任务不可能存在两个小时 protected: bool _bindLogicLine(UINT LineId); // 绑定逻辑线路 void _freeLogicLine(void); // 释放逻辑线路 void _PrcoCallNode(UINT HostLine, UINT AssoLine,bool isTransfer=false); // 处理添加会话 void _ProcCmdReturn(BOOL Result, bool FreeRes = false); // 处理命令返回, FreeRes参数可以尽早释放所占线路,以免较慢的线路释放无法满足过快的IVR流程 protected: CPduEntity m_CurrCmd; // Task当前命令 EventDevOperation m_CurrDevOp; // Task当前设备操作信息 CLogicLine *m_pCurrLine; // Task关联的线路类指针 ULONG m_TaskCallId; // Task当前CallId INT64 m_TaskTime; // Task创建时间 防止收不到回复导致内存不释放 2022-10-18 };