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

模拟服务器

开发平台:

C/C++

  1. // NetServer.h: interface for the CNetServer class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_NETSERVER_H__312A07AD_96A8_40C4_914B_C13DD706CB40__INCLUDED_)
  5. #define AFX_NETSERVER_H__312A07AD_96A8_40C4_914B_C13DD706CB40__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include <map>
  10. #include "../../Multiserver/Heaven/Interface/IServer.h"
  11. #include "NetConnect.h"
  12. class CNetServer 
  13. {
  14. public:
  15. CNetServer();
  16. virtual ~CNetServer();
  17. private:
  18. IServer* m_pServer;
  19. BOOL m_ready;
  20. private:
  21. static void __stdcall ServerEventNotify (
  22. LPVOID lpParam,
  23. const unsigned long &ulnID,
  24. const unsigned long &ulnEventType );
  25. public:
  26. BOOL Startup(size_t nPlayerMaxCount, size_t nPrecision, size_t maxFreeBuffers_Cache, size_t bufferSize_Cache, unsigned long ulnAddressToListenOn, unsigned short usnPortToListenOn);
  27. BOOL Shutdown();
  28. size_t GetConnectCount();
  29. BOOL IsConnectReady(unsigned long id);
  30. BOOL Disconnect(unsigned long id);
  31. IServer* GetServer() const {return m_ready ? m_pServer : NULL;}
  32. CNetConnectDup FindNetConnect(unsigned long id);
  33. BOOL BroadPackage(const void* pData, size_t size);
  34. private:
  35. typedef std::map<unsigned long, CNetConnect*> ID2CONNECTMAP;
  36. ID2CONNECTMAP m_mapId2Connect;
  37. private:
  38. void _NotifyClientConnectCreate(unsigned long ulnID);
  39. void _NotifyClientConnectClose(unsigned long ulnID);
  40. protected:
  41. virtual CNetConnect* CreateConnect(CNetServer* pNetServer, unsigned long id) = NULL;
  42. virtual void DestroyConnect(CNetConnect* pConn) = NULL;
  43. virtual void OnBuildup() {}
  44. virtual void OnClearup() {}
  45. virtual void OnClientConnectCreate(CNetConnect* pConn) {}
  46. virtual void OnClientConnectClose(CNetConnect* pConn) {}
  47. private:
  48. CLockMRSW m_lockAccess;
  49. public:
  50. BOOL Route();
  51. protected:
  52. BOOL DoSendPackage(const void* pData, size_t size);
  53. friend class CNetConnect;
  54. friend class CNetConnectDup;
  55. };
  56. #endif // !defined(AFX_NETSERVER_H__312A07AD_96A8_40C4_914B_C13DD706CB40__INCLUDED_)