2026-01-29 15:01:53 +09:00
|
|
|
#ifndef __GEARSRC_NET_H__
|
|
|
|
|
#define __GEARSRC_NET_H__
|
|
|
|
|
|
|
|
|
|
#include <GearSrc/MachDep.h>
|
|
|
|
|
#include <GearSrc/TypeDefs.h>
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
2026-01-30 00:22:34 +09:00
|
|
|
/**
|
|
|
|
|
* 6 bits reserved
|
|
|
|
|
* 1 bit unsafe or safe
|
|
|
|
|
* 1 bit ack or normal
|
|
|
|
|
* 4 bytes index
|
|
|
|
|
* 4 bytes sequence
|
|
|
|
|
*
|
|
|
|
|
* if unsafe:
|
|
|
|
|
* n bytes data
|
|
|
|
|
* else if ack:
|
|
|
|
|
* no data continues
|
|
|
|
|
* else if sequence is 0:
|
|
|
|
|
* 4 bytes sequence count
|
|
|
|
|
* else:
|
|
|
|
|
* n bytes data
|
|
|
|
|
*/
|
|
|
|
|
|
2026-01-29 15:23:28 +09:00
|
|
|
#define GSNetDefaultPort 23903
|
2026-01-29 21:05:42 +09:00
|
|
|
#define GSNetAcknowledgeTimeout 500
|
2026-01-29 15:23:28 +09:00
|
|
|
|
2026-01-29 16:43:44 +09:00
|
|
|
#define GSNetPacketFlagAcknowledge (1 << 0)
|
2026-01-30 00:22:34 +09:00
|
|
|
#define GSNetPacketFlagUnsafe (1 << 1)
|
2026-01-29 16:43:44 +09:00
|
|
|
|
2026-01-29 15:01:53 +09:00
|
|
|
/* net_client.c */
|
2026-01-29 16:43:44 +09:00
|
|
|
GSDECL GSNetClient GSNetClientOpen(GSClient net, const char* hostname, int port);
|
|
|
|
|
GSDECL void GSNetClientStep(GSNetClient net);
|
|
|
|
|
GSDECL void GSNetClientClose(GSNetClient net);
|
2026-01-29 15:01:53 +09:00
|
|
|
|
|
|
|
|
/* net_server.c */
|
2026-01-29 16:43:44 +09:00
|
|
|
GSDECL GSNetServer GSNetServerOpen(GSServer net, int port);
|
|
|
|
|
GSDECL void GSNetServerStep(GSNetServer net);
|
|
|
|
|
GSDECL void GSNetServerClose(GSNetServer net);
|
2026-01-29 15:01:53 +09:00
|
|
|
|
|
|
|
|
/* net_base.c */
|
2026-01-29 19:42:00 +09:00
|
|
|
GSDECL GSBool GSNetBaseHasData(GSNetSocket sock);
|
|
|
|
|
GSDECL GSNetSocket GSNetBaseServer(int port);
|
|
|
|
|
GSDECL GSNetSocket GSNetBaseClient(const char* hostname, int port, GSNetAddress* address);
|
|
|
|
|
GSDECL void GSNetBaseClose(GSNetSocket sock);
|
|
|
|
|
GSDECL int GSNetBaseRead(GSNetSocket sock, void* data, int size, GSNetAddress* address); /* always read 508 bytes! */
|
|
|
|
|
GSDECL void GSNetBaseWrite(GSNetSocket sock, void* data, int size, GSNetAddress* address);
|
2026-01-29 15:01:53 +09:00
|
|
|
|
|
|
|
|
/* net_packet.c */
|
2026-01-29 19:42:00 +09:00
|
|
|
GSDECL void GSNetPacketRead(GSNetSocket sock, GSNetPacket* packet, GSNetAddress* address);
|
|
|
|
|
GSDECL void GSNetPacketWrite(GSNetSocket sock, GSNetPacket* packet, GSNetAddress* address);
|
2026-01-29 15:01:53 +09:00
|
|
|
|
2026-01-29 17:48:51 +09:00
|
|
|
/* net_state.c */
|
2026-01-30 01:24:14 +09:00
|
|
|
GSDECL void GSNetStateCheckRead(GSNetState* state, GSNetSocket sock, GSNetPacket* packet, GSNetAddress* address);
|
|
|
|
|
GSDECL void GSNetStateCheckWrite(GSNetState* state, GSNetSocket sock, GSNetAddress* address);
|
|
|
|
|
GSDECL void GSNetStateInit(GSNetState* state, GSEngine engine);
|
|
|
|
|
GSDECL void GSNetStateDeinit(GSNetState* state);
|
|
|
|
|
GSDECL GSBool GSNetStateRead(GSNetState* state, void** data, int* size); /* remember to free what gets returned in data! */
|
|
|
|
|
GSDECL void GSNetStateWrite(GSNetState* state, void* data, int size);
|
|
|
|
|
GSDECL void GSNetStateWriteUnsafe(GSNetState* state, void* data, int size);
|
2026-01-29 17:48:51 +09:00
|
|
|
|
2026-01-29 15:01:53 +09:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif
|