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

模拟服务器

开发平台:

C/C++

  1. /********************************************************************
  2. created: 2003/02/26
  3. file base: JXClient
  4. file ext: h
  5. author: liupeng
  6. purpose:
  7. *********************************************************************/
  8. #ifndef __INCLUDE_JXCLIENT_H__
  9. #define __INCLUDE_JXCLIENT_H__
  10. //[ Include in ...ESClient
  11. #include "ESClientSocketClient.h"
  12. #include "ESClienttstring.h"
  13. //]
  14. #define MAX_BUFFER_KEEPINPOOL 30
  15. #define BUFFER_SIZE 1024
  16. #define EXTEND_BUFFER_SIZE BUFFER_SIZE * 64
  17. #define SERVER_CONNECT_CREATE 1
  18. #define SERVER_CONNECT_CLOSE 2
  19. typedef VOID ( CALLBACK *CALLBACK_CLIENT_EVENT )( 
  20. DWORD dwEventType /*SERVER_CONNECT_CREATE | SERVER_CONNECT_CLOSE*/ );
  21. /*
  22.  * class CConnectManager
  23.  */
  24. class CConnectManager : private OnlineGameLib::Win32::CIOBuffer::Allocator
  25. {
  26. public:
  27. CConnectManager( size_t maxFreeBuffers, size_t bufferSize = 1024);
  28. ~CConnectManager();
  29. void ConnectServer();
  30. void DisConnetServer();
  31. void RecvFromServer( const char *pData, size_t dataLength );
  32. const char *GetFromClient( size_t &dataLength );
  33. void InstallCallBack( CALLBACK_CLIENT_EVENT pfn ) { m_pfnCallbackClientEvent = pfn; };
  34. protected:
  35. size_t GetMinimumMessageSize() const;
  36. size_t GetMessageSize( const OnlineGameLib::Win32::CIOBuffer *pBuffer ) const;
  37. OnlineGameLib::Win32::CIOBuffer *ProcessDataStream(
  38. OnlineGameLib::Win32::CIOBuffer *pBuffer);
  39. void ProcessCommand( const OnlineGameLib::Win32::CIOBuffer *pBuffer);
  40. private:
  41. CALLBACK_CLIENT_EVENT m_pfnCallbackClientEvent;
  42. OnlineGameLib::Win32::CCriticalSection m_csReadAction;
  43. OnlineGameLib::Win32::CIOBuffer *m_pRecvBuffer;
  44. OnlineGameLib::Win32::CIOBuffer *m_pReadBuffer;
  45. };
  46. /*
  47.  * Public interface for the third user
  48.  */
  49. #define JX_CLIENT_ // NULL
  50. /*
  51.  * Create and destory a server to accpet some required client
  52.  */
  53. bool ClientStartup( 
  54. JX_CLIENT_
  55. );
  56. void ClientCleanup( JX_CLIENT_ );
  57. bool ConnectTo( 
  58. JX_CLIENT_
  59. const OnlineGameLib::Win32::_tstring &addressToConnectServer,
  60. unsigned short portToConnectServer );
  61. void InstallCallBack( JX_CLIENT_ CALLBACK_CLIENT_EVENT pfn );
  62. void ConnectServer( JX_CLIENT_ );
  63. void DisConnetServer( JX_CLIENT_ );
  64. /*
  65.  * For control the Client status
  66.  */
  67. #define CLIENT(opt) Client_##opt();
  68. void Client_Start();
  69. void Client_Pause();
  70. void Client_Begin();
  71. void Client_End();
  72. /*
  73.  * Client usage
  74.  */
  75. extern inline void RecvFromServer( 
  76. JX_CLIENT_ 
  77. const char *pData, 
  78. size_t dataLength );
  79. extern inline const char *GetFromServer( size_t &dataLength );
  80. extern inline void SendToServer( 
  81. JX_CLIENT_ 
  82. void *pData, 
  83. size_t dataLength );
  84. void Shutdown( JX_CLIENT_ );
  85. #endif //__INCLUDE_JXCLIENT_H__