| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /*************************************************************************
- 【文件名】 PduMain.h
- 【功能模块和目的】 PDU通讯主实现类头文件
- 【开发者及日期】 郑石诺 2015/03/19
- 【版本】 V1.0.0
- 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
- 【更改记录】
- *************************************************************************/
- #pragma once
- #include "NetCtrlInterface.h"
- #include "NetRepInterface.h"
- class CPduSocketServer;
- class CPduSocket;
- class CPduSocketVector;
- class CPduEventHost;
- class CPduEntity;
- /*************************************************************************
- 【类名】 CPduMain
- 【功能】
- 【接口说明】 PDU通讯主实现类
- 【开发者及日期】 郑石诺 2015/03/19
- 【版本】 V1.0.0
- 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
- 【更改记录】
- *************************************************************************/
- class CPduMain : public IPduComm, public IPduLink
- {
- private:
- static CPduMain* m_pInstance; // PDU主控类实例指针
- CPduSocketServer* m_pSocketServer; // SOCKET监听服务器实例对象
- CPduSocketVector* m_pSocketVector; // SOCKET通讯实体容器类对象
- CPduEventHost* m_pEventHost; // 事件订阅宿主类
- // 属性
- PDU_DEV_TYPE m_nDevType; // 本端设备类型
- int m_nDevId; // 本端设备ID
- public:
- // SOCKET逻辑控制相关操作
- void OnConnEstablished(CPduSocket* a_pSocket); // 连接建立处理
- void OnConnFailed(CPduSocket* a_pSocket); // 连接失败/断开处理
- void OnConnRegistOK(CPduSocket* a_pSocket); // 注册成功
- void OnConnRegistFailed(CPduSocket* a_pSocket); // 注册失败
- void OnRecvCommand(CPduEntity* a_pCmd); // 命令接收处理
- private:
- CPduMain(void);
- virtual ~CPduMain(void);
- // 操作
- void SetLocalInfo(PDU_DEV_TYPE a_nDevType, int a_nDevId); // 设定PDU本端设备类型及ID
- void SetLinkContent(PduLinkContent& linkContent,
- PDU_LINK_STATE a_nLinkInfo,
- CPduSocket* a_pSocket); // 生成连接信息内容
- public:
- static CPduMain* getInstance(); // 得到控制实例
- void GetLocalInfo(PDU_DEV_TYPE& a_nDevType, int& a_nDevId); // 获取PDU本端设备类型及ID
- // 消息通讯接口实现
- virtual BOOL Send(CPduEntity* a_pCmd, PDU_DEV_TYPE a_nDestType, int a_nDestId); // 发送PDU命令
- virtual void Send2All(CPduEntity* a_pCmd);
- // 连接管理接口实现
- virtual BOOL GetLinkInfo(CString& a_strIp, int& a_nPort, PDU_DEV_TYPE a_nType, int a_nId); // 获取指定连接的网络信息
- virtual BOOL GetPeerIp(CString& a_strIp, CPduEntity* a_pCmd); // 获取PDU命令的发送方IP
-
- virtual BOOL CreatePduServer(int a_nListenPort,
- PDU_DEV_TYPE a_nLocalType,
- int a_nLocalId); // 创建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); // 创建PDU通讯客户端
- virtual BOOL ClosePduClient(PDU_DEV_TYPE a_nFarType, int a_nFarId); // 关闭PDU通讯客户端
- virtual void StopAll(void);
- // 事件订阅接口实现(注:事件订阅应在创建操作之前调用)
- virtual BOOL RegistPduLinkProc(IPduLinkProc* a_pPduLinkProc, BOOL bIsInsert); // 添加连接管理事件订阅
- virtual BOOL RegistPduCommProc(IPduCommProc* a_pPduCommProc, BOOL bIsInsert); // 添加消息通讯事件订阅
- };
|