NetConnect.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // NetConnect.h: interface for the CNetConnect class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_NETCONNECT_H__1DDF0ACA_C466_4BB0_8A1D_C4B55012953E__INCLUDED_)
  5. #define AFX_NETCONNECT_H__1DDF0ACA_C466_4BB0_8A1D_C4B55012953E__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "../../Multiserver/Heaven/Interface/IServer.h"
  10. #include "KThread.h"
  11. class CNetConnect : public KThread, //!workmode_singlethread
  12. public IMessageProcess //workmode_multithread2
  13. {
  14. public:
  15. CNetConnect(class CNetServer* pNetServer, unsigned long id);
  16. virtual ~CNetConnect();
  17. public:
  18. CNetServer* GetServer() const {return m_pNetServer;}
  19. unsigned long GetID() const {return m_id;}
  20. private:
  21. CNetServer* m_pNetServer;
  22. unsigned long m_id;
  23. LONG m_disconnect;
  24. private:
  25. DWORD m_IP;
  26. unsigned short m_port;
  27. public:
  28. DWORD GetIP() const {return m_IP;}
  29. DWORD GetPort() const {return m_port;}
  30. HRESULT OnMessage( VOID *, size_t );
  31. BOOL IsReady() const;
  32. protected:
  33. virtual DWORD Main(LPVOID lpParam);
  34. #ifndef _WORKMODE_SINGLETHREAD
  35. virtual void EnterLoop() {}
  36. virtual void LeaveLoop() {}
  37. #endif
  38. virtual void BeginRoute() {}
  39. virtual void EndRoute() {}
  40. virtual void RecvPackage(const void* pData, size_t size) {}
  41. public:
  42. BOOL SendPackage(const void* pData, size_t size);
  43. public:
  44. void _NotifyClientConnectCreate();
  45. void _NotifyClientConnectClose();
  46. protected:
  47. virtual void OnClientConnectCreate() {}
  48. virtual void OnClientConnectClose() {}
  49. private:
  50. BOOL DoRoute();
  51. public:
  52. BOOL Route();
  53. };
  54. class CNetConnectDup 
  55. {
  56. public:
  57. CNetConnectDup() : m_pServer(NULL), m_IP(0), m_id(-1) {}
  58. CNetConnectDup(const CNetConnectDup& netconndup) : m_pServer(netconndup.GetServer()), m_IP(netconndup.m_IP), m_id(netconndup.GetID()) {_SafeAddRef(m_pServer);}
  59. CNetConnectDup(const CNetConnect& netconnect);
  60. virtual ~CNetConnectDup() {_SafeRelease(m_pServer);}
  61. BOOL IsValid() const {return m_pServer != NULL;}
  62. IServer* GetServer() const {return m_pServer;}
  63. unsigned long GetID() const {return m_id;}
  64. DWORD GetIP() const {return m_IP;}
  65. BOOL SendPackage(const void* pData, size_t size) const;
  66. void Clearup() {_SafeRelease(m_pServer); m_IP = 0; m_id = -1;}
  67. CNetConnectDup& operator =(const CNetConnectDup& src)
  68. { if (&src == this) return *this; _SafeRelease(m_pServer); m_pServer = src.m_pServer; _SafeAddRef(m_pServer); m_IP = src.m_IP; m_id = src.m_id; return *this; }
  69. CNetConnectDup& operator =(const CNetConnect& src);
  70. private:
  71. IServer* m_pServer;
  72. DWORD m_IP;
  73. unsigned long m_id;
  74. };
  75. #endif // !defined(AFX_NETCONNECT_H__1DDF0ACA_C466_4BB0_8A1D_C4B55012953E__INCLUDED_)