Network.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. #ifndef CORE_NETWORK_H
  2. #define CORE_NETWORK_H
  3. #include <core/Buffer.h>
  4. #include <core/Types.h>
  5. typedef enum {
  6. CORE_PACKET_RELIABLE,
  7. CORE_PACKET_SEQUENCED,
  8. CORE_PACKET_UNSEQUENCED
  9. } CorePacketSendMode;
  10. typedef struct {
  11. const char* data;
  12. size_t size;
  13. size_t index;
  14. } CoreInPacket;
  15. void coreInitInPacket(CoreInPacket* in, const void* data, size_t n);
  16. bool coreReadInPacketU8(CoreInPacket* in, u8* u);
  17. bool coreReadInPacketU16(CoreInPacket* in, u16* u);
  18. bool coreReadInPacketU32(CoreInPacket* in, u32* u);
  19. bool coreReadInPacketI8(CoreInPacket* in, i8* i);
  20. bool coreReadInPacketI16(CoreInPacket* in, i16* i);
  21. bool coreReadInPacketI32(CoreInPacket* in, i32* i);
  22. bool coreReadInPacketFloat(CoreInPacket* in, float* f);
  23. size_t coreReadInPacketString(CoreInPacket* in, char* buffer, size_t n);
  24. bool coreReadInPacket(CoreInPacket* in, void* buffer, size_t n);
  25. typedef struct {
  26. CoreBuffer data;
  27. } CoreOutPacket;
  28. void coreInitOutPacket(CoreOutPacket* out);
  29. void coreDestroyOutPacket(CoreOutPacket* out);
  30. void coreWriteOutPacketU8(CoreOutPacket* out, u8 u);
  31. void coreWriteOutPacketU16(CoreOutPacket* out, u16 u);
  32. void coreWriteOutPacketU32(CoreOutPacket* out, u32 u);
  33. void coreWriteOutPacketI8(CoreOutPacket* out, i8 i);
  34. void coreWriteOutPacketI16(CoreOutPacket* out, i16 i);
  35. void coreWriteOutPacketI32(CoreOutPacket* out, i32 i);
  36. void coreWriteOutPacketFloat(CoreOutPacket* out, float f);
  37. void coreWriteOutPacketString(CoreOutPacket* out, const char* buffer);
  38. void coreWriteOutPacket(CoreOutPacket* out, const void* buffer, size_t n);
  39. typedef u16 CorePort;
  40. typedef void (*CoreOnServerConnect)(void);
  41. typedef void (*CoreOnServerDisconnect)(void);
  42. typedef void (*CoreOnServerPacket)(CoreInPacket*);
  43. bool coreStartClient(void);
  44. void coreStopClient(void);
  45. bool coreConnectClient(const char* server, CorePort port, int timeoutTicks);
  46. void coreSetClientTimeout(u32 timeout, u32 timeoutMin, u32 timeoutMax);
  47. void coreDisconnectClient(int timeoutTicks);
  48. void coreSendClientPacket(const CoreOutPacket* p, CorePacketSendMode mode);
  49. void coreTickClient(void);
  50. void coreSetClientConnectHandler(CoreOnServerConnect oc);
  51. void coreSetClientDisconnectHandler(CoreOnServerDisconnect od);
  52. void coreSetClientPacketHandler(CoreOnServerPacket op);
  53. void coreResetClientHandler(void);
  54. bool coreIsClientConnecting(void);
  55. bool coreIsClientConnected(void);
  56. typedef int CoreClient;
  57. typedef void (*CoreOnClientConnect)(CoreClient);
  58. typedef void (*CoreOnClientDisconnect)(CoreClient);
  59. typedef void (*CoreOnClientPacket)(CoreClient, CoreInPacket*);
  60. bool coreStartServer(CorePort port, size_t maxClients);
  61. void coreStopServer(void);
  62. void coreTickServer(void);
  63. void coreSendServerPacketBroadcast(const CoreOutPacket* p,
  64. CorePacketSendMode mode);
  65. void coreSendServerPacket(CoreClient client, const CoreOutPacket* p,
  66. CorePacketSendMode mode);
  67. void coreSetServerTimeout(CoreClient client, u32 timeout, u32 timeoutMin,
  68. u32 timeoutMax);
  69. void coreDisconnectServerClient(CoreClient client);
  70. void coreSetServerConnectHandler(CoreOnClientConnect oc);
  71. void coreSetServerDisconnectHandler(CoreOnClientDisconnect od);
  72. void coreSetServerPacketHandler(CoreOnClientPacket op);
  73. void coreResetServerHandler(void);
  74. #ifdef IMPORT_CORE
  75. #define PacketSendMode CorePacketSendMode
  76. #define PACKET_RELIABLE CORE_PACKET_RELIABLE
  77. #define PACKET_SEQUENCED CORE_PACKET_SEQUENCED
  78. #define PACKET_UNSEQUENCED CORE_PACKET_UNSEQUENCED
  79. #define InPacket CoreInPacket
  80. #define initInPacket coreInitInPacket
  81. #define readInPacketU8 coreReadInPacketU8
  82. #define readInPacketU16 coreReadInPacketU16
  83. #define readInPacketU32 coreReadInPacketU32
  84. #define readInPacketI8 coreReadInPacketI8
  85. #define readInPacketI16 coreReadInPacketI16
  86. #define readInPacketI32 coreReadInPacketI32
  87. #define readInPacketFloat coreReadInPacketFloat
  88. #define readInPacketString coreReadInPacketString
  89. #define readInPacket coreReadInPacket
  90. #define OutPacket CoreOutPacket
  91. #define initOutPacket coreInitOutPacket
  92. #define destroyOutPacket coreDestroyOutPacket
  93. #define writeOutPacketU8 coreWriteOutPacketU8
  94. #define writeOutPacketU16 coreWriteOutPacketU16
  95. #define writeOutPacketU32 coreWriteOutPacketU32
  96. #define writeOutPacketI8 coreWriteOutPacketI8
  97. #define writeOutPacketI16 coreWriteOutPacketI16
  98. #define writeOutPacketI32 coreWriteOutPacketI32
  99. #define writeOutPacketFloat coreWriteOutPacketFloat
  100. #define writeOutPacketString coreWriteOutPacketString
  101. #define writeOutPacket coreWriteOutPacket
  102. #define Port CorePort
  103. #define OnServerConnect CoreOnServerConnect
  104. #define OnServerDisconnect CoreOnServerDisconnect
  105. #define OnServerPacket CoreOnServerPacket
  106. #define startClient coreStartClient
  107. #define stopClient coreStopClient
  108. #define connectClient coreConnectClient
  109. #define setClientTimeout coreSetClientTimeout
  110. #define disconnectClient coreDisconnectClient
  111. #define sendClientPacket coreSendClientPacket
  112. #define tickClient coreTickClient
  113. #define setClientConnectHandler coreSetClientConnectHandler
  114. #define setClientDisconnectHandler coreSetClientDisconnectHandler
  115. #define setClientPacketHandler coreSetClientPacketHandler
  116. #define resetClientHandler coreResetClientHandler
  117. #define isClientConnecting coreIsClientConnecting
  118. #define isClientConnected coreIsClientConnected
  119. #define Client CoreClient
  120. #define OnClientConnect CoreOnClientConnect
  121. #define OnClientDisconnect CoreOnClientDisconnect
  122. #define OnClientPacket CoreOnClientPacket
  123. #define startServer coreStartServer
  124. #define stopServer coreStopServer
  125. #define tickServer coreTickServer
  126. #define sendServerPacketBroadcast coreSendServerPacketBroadcast
  127. #define sendServerPacket coreSendServerPacket
  128. #define setServerTimeout coreSetServerTimeout
  129. #define disconnectServerClient coreDisconnectServerClient
  130. #define setServerConnectHandler coreSetServerConnectHandler
  131. #define setServerDisconnectHandler coreSetServerDisconnectHandler
  132. #define setServerPacketHandler coreSetServerPacketHandler
  133. #define resetServerHandler coreResetServerHandler
  134. #endif
  135. #endif