/************************************************************************* 【文件名】 NetCtrlInterface.h 【功能模块和目的】 网络连接控制接口头文件 【开发者及日期】 郑石诺 2015.05.22 【版本】 V1.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once #include "PduLinkInc.h" class CPduEntity; class IPduLinkProc; /************************************************************************* 【类名】 IPduLink 【功能】 定义PDU连接管理接口 【接口说明】 【开发者及日期】 郑石诺 2015.05.22 【版本】 V1.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class IPduLink { public: virtual ~IPduLink(void) = 0 {} // 连接管理 virtual BOOL GetLinkInfo(CString& a_strIp, int& a_nPort, PDU_DEV_TYPE a_nType, int a_nId) = 0; // 获取指定连接的网络信息 virtual BOOL GetPeerIp(CString& a_strIp, CPduEntity* a_pCmd) = 0; // 获取PDU命令的发送方IP virtual BOOL CreatePduServer(int a_nListenPort, PDU_DEV_TYPE a_nLocalType, int a_nLocalId) = 0; // 创建PDU通讯服务器 virtual BOOL CreatePduClient(CString a_strFarIp, int a_nFarPort, PDU_DEV_TYPE a_nLocalType, int a_nLocalId, PDU_DEV_TYPE a_nFarType, int a_nFarId, bool IsAutoReconnect) = 0; // 创建PDU通讯客户端 virtual BOOL ClosePduClient(PDU_DEV_TYPE a_nFarType, int a_nFarId) = 0; // 关闭PDU通讯客户端 // 事件处理 virtual BOOL RegistPduLinkProc(IPduLinkProc* a_pPduLinkProc, BOOL bIsInsert) = 0; // 添加/删除订阅 virtual void StopAll(void) = 0; }; class IPduCommProc; /************************************************************************* 【类名】 IPduComm 【功能】 定义PDU消息传输接口 【接口说明】 【开发者及日期】 郑石诺 2015.05.22 【版本】 V1.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class IPduComm { public: virtual ~IPduComm(void) = 0 {} virtual BOOL Send(CPduEntity* a_pCmd, PDU_DEV_TYPE a_nDestType, int a_nDestId) = 0; // 发送PDU命令(正常发送) virtual void Send2All(CPduEntity* a_pCmd) = 0; // 向所有已注册的连接发PDU virtual BOOL RegistPduCommProc(IPduCommProc* a_pPduCommProc, BOOL bIsInsert) = 0; // 添加/取消订阅 }; /************************************************************************* 【类名】 CInterfaceWindow 【功能】 获取接口的窗口 【接口说明】 【开发者及日期】 郑石诺 2015/07/19 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CInterfaceWindow { public: virtual ~CInterfaceWindow(void) = 0 {} // 两套接口是互斥的,混用将带来不可预估的错误 // IOCP模式的客户端接口不能单独使用必须搭配服务器接口, // 否则将收不到任何PDU static IPduLink* getLinkInstance(void); // 得到异步套接字模式下的连接管理接口实例(老接口) static IPduComm* getCommInstance(void); // 得到异步套接字模式下的消息传输接口实例(老接口) static IPduLink* getIocpLinkInstance(void); // 得到IOCP模式下的连接管理接口实例 static IPduComm* getIocpCommInstance(void); // 得到IOCP模式下的消息传输接口实例 };