Network.h 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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_RELIABLE,
  7. CORE_SEQUENCED,
  8. CORE_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 coreServerTimeout(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. #endif