升龙物业 老版本 ocx IPO, 加密狗 转值班电话

PduSocketVector.h 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*************************************************************************
  2. 【文件名】 PduSocketVector.h
  3. 【功能模块和目的】 SOCKET通讯实体容器类头文件
  4. 【开发者及日期】 郑石诺 2015/03/19
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. #include "PduLinkInc.h"
  11. class CPduSocket;
  12. class CPduEntity;
  13. /*************************************************************************
  14. 【类名】 CPduSocketVector
  15. 【功能】
  16. 【接口说明】 SOCKET通讯实体容器类
  17. 【开发者及日期】 郑石诺 2015/03/19
  18. 【版本】 V1.0.0
  19. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  20. 【更改记录】
  21. *************************************************************************/
  22. class CPduSocketVector
  23. {
  24. private:
  25. typedef CList<CPduSocket*, CPduSocket*> ListSocket;
  26. ListSocket m_listConnecting; // 正在连接的SOCKET
  27. ListSocket m_listConnected; // 已连接的SOCKET
  28. ListSocket m_listRegisted; // 可通讯的SOCKET
  29. CPduSocket* m_pSocketDeleting; // 要删除的SOCKET
  30. private:
  31. void __OnConnFailedProc(CPduSocket* a_pSocket); // SOCKET连接断开/失败的后续处理
  32. BOOL __DeleteSocket(CPduSocket* a_pSocket, ListSocket& a_list); // 删除指定的SOCKET
  33. BOOL __RemoveSocket(CPduSocket* a_pSocket, ListSocket& a_list); // 从链表中移除指定的SOCKET
  34. CPduSocket* __LookupSocket(PDU_DEV_TYPE a_nFarType, int a_nFarId, ListSocket& a_list); // 从LIST中查找指定的连接
  35. CPduSocket* __LookupSocket(SOCKET a_hSocket, ListSocket& a_list); // 从LIST中查找指定的连接
  36. BOOL __Lookup4Delete(PDU_DEV_TYPE a_nFarType, int a_nFarId, ListSocket& a_list);
  37. public:
  38. CPduSocketVector(void);
  39. ~CPduSocketVector(void);
  40. // 业务操作
  41. void InsertSocket(CPduSocket* a_pSocket); // 添加一个新的连接
  42. BOOL RemoveSocket(PDU_DEV_TYPE a_nFarType, int a_nFarId); // 删除一个连接
  43. CPduSocket* GetPduSocket(PDU_DEV_TYPE a_nFarType, int a_nFarId); // 查找连接
  44. CPduSocket* GetPduSocket(SOCKET a_hSocket); // 查找连接
  45. void Send2All(CPduEntity* a_pPdu);
  46. void Release(void);
  47. // 事件响应
  48. PDU_LINK_STATE OnConnEstablished(CPduSocket* a_pSocket); // 连接建立
  49. PDU_LINK_STATE OnConnFailed(CPduSocket* a_pSocket); // 连接失败或断开
  50. PDU_LINK_STATE OnConnRegistOK(CPduSocket* a_pSocket); // 注册成功
  51. PDU_LINK_STATE OnConnRegistFailed(CPduSocket* a_pSocket); // 注册失败
  52. };