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

模拟服务器

开发平台:

C/C++

  1. /********************************************************************
  2. created: 2003/03/19
  3. file base: IServer
  4. file ext: h
  5. author: liupeng
  6. purpose: Server interface definition
  7. *********************************************************************/
  8. #ifndef __INCLUDE_INTERFACE_ISERVER_H__
  9. #define __INCLUDE_INTERFACE_ISERVER_H__
  10. #include "HeavenInterface.h"
  11. #include <objbase.h>
  12. /*
  13.  * Antitype : IOCPServer Interface
  14.  */
  15. // {FC6B562E-89C2-4fbc-BF5F-553C09AE93D8}
  16. DEFINE_GUID( IID_IIOCPServer, 
  17. 0xfc6b562e, 0x89c2, 0x4fbc, 0xbf, 0x5f, 0x55, 0x3c, 0x9, 0xae, 0x93, 0xd8);
  18. /*
  19.  * ATTENTION : PLEASE USE IT IN ANSI SETTING
  20.  */
  21. interface IMessageProcess
  22. {
  23. virtual HRESULT OnMessage( VOID*, size_t ) = 0;
  24. };
  25. DECLARE_INTERFACE_( IServer, IUnknown )
  26. {
  27. /*
  28.  * Initialize server object and start up it
  29.  */
  30. STDMETHOD( Startup )
  31. (
  32. ) PURE;
  33. /*
  34.  * Stop this object and destroy it
  35.  */
  36. STDMETHOD( Cleanup )
  37. (
  38. ) PURE;
  39. /*
  40.  * Afford service base on an IP.PORT
  41.  */
  42. STDMETHOD( OpenService )
  43. (
  44. const unsigned long &ulnAddressToListenOn,
  45. const unsigned short &usnPortToListenOn
  46. ) PURE;
  47. /*
  48.  * Close the current connection
  49.  */
  50. STDMETHOD( CloseService )
  51. (
  52. ) PURE;
  53. /*
  54.  * Install a callback funtion is used to get event from server
  55.  */
  56. STDMETHOD( RegisterMsgFilter )
  57. (
  58. LPVOID lpParam, 
  59. CALLBACK_SERVER_EVENT pfnEventNotify
  60. ) PURE;
  61. /*
  62.  * Install a callback funtion is used to get message from server
  63.  */
  64. STDMETHOD( RegisterMsgFilter )
  65. (
  66. const unsigned long ulnClientID, 
  67. IMessageProcess* pfnMsgNotify
  68. ) PURE;
  69. /*
  70.  * Control network engine
  71.  */
  72. /* STDMETHOD( Start )
  73. (
  74. ) PURE;
  75. STDMETHOD( Stop )
  76. (
  77. ) PURE;
  78. */
  79. /*
  80.  * prepare to send 
  81.  */
  82. STDMETHOD( PreparePackSink )
  83. (
  84. ) PURE;
  85. /*
  86.  * Add data into client sink but don't to send immediately
  87.  */
  88. STDMETHOD( PackDataToClient )
  89. (
  90. const unsigned long &ulnClientID,
  91. const void * const pData,
  92. const size_t &datalength
  93. ) PURE;
  94. /*
  95.  * Begin to send
  96.  * Send all when ulnClientID is equal to -1
  97.  */
  98. STDMETHOD( SendPackToClient )
  99. (
  100. const unsigned long &ulnClientID /* -1 */
  101. ) PURE;
  102. /*
  103.  * Send data to client immediately
  104.  */
  105. STDMETHOD( SendData )
  106. (
  107. const unsigned long &ulnClientID,
  108. const void * const pData,
  109. const size_t &datalength
  110. ) PURE;
  111. /*
  112.  * Get some data from a specified client
  113.  */
  114. STDMETHOD_( const void *, GetPackFromClient )
  115. (
  116. const unsigned long &ulnClientID,
  117. size_t &datalength
  118. ) PURE;
  119. /*
  120.  * Disconnect a specified connection
  121.  */
  122. STDMETHOD( ShutdownClient )
  123. (
  124. const unsigned long &ulnClientID
  125. ) PURE;
  126. /*
  127.  * Get current client count
  128.  */
  129. STDMETHOD_( size_t, GetClientCount )
  130. (
  131. ) PURE;
  132. /*
  133.  * Get information from a specified client
  134.  */
  135. STDMETHOD_( const char *, GetClientInfo )
  136. (
  137. const unsigned long &ulnClientID
  138. ) PURE;
  139. }; // Endof DECLARE_INTERFACE_( IServer ...
  140. /*
  141.  * Antitype : IServerFactory Interface
  142.  */
  143. // {A4984B66-8CDE-4752-9BEE-DACC06A63548}
  144. DEFINE_GUID( IID_IServerFactory, 
  145. 0xa4984b66, 0x8cde, 0x4752, 0x9b, 0xee, 0xda, 0xcc, 0x6, 0xa6, 0x35, 0x48);
  146. DECLARE_INTERFACE_( IServerFactory, IUnknown )
  147. {
  148. STDMETHOD( SetEnvironment )
  149. (
  150. const size_t &nPlayerMaxCount,
  151. const size_t &nPrecision,
  152. const size_t &maxFreeBuffers_Cache,
  153. const size_t &bufferSize_Cache
  154. ) PURE;
  155. STDMETHOD( CreateServerInterface )
  156. (
  157. REFIID riid, 
  158. void** ppv
  159. ) PURE;
  160. }; // IID_IServerFactory
  161. /*
  162.  * Antetype: CreateInterface
  163.  *
  164.  * Return: S_OK : success create object
  165.  *  E_OUTOFMEMORY : create faild
  166.  *
  167.  * Purpose: Get server interface
  168.  */
  169. STDAPI CreateInterface
  170. (
  171. REFIID riid,
  172. void **ppv
  173. );
  174. #endif // __INCLUDE_INTERFACE_ISERVER_H__