2026-01-29 15:01:53 +09:00
|
|
|
#include <GearSrc/Net.h>
|
2026-01-29 15:23:28 +09:00
|
|
|
|
|
|
|
|
#include <GearSrc/Log.h>
|
2026-01-29 17:28:39 +09:00
|
|
|
#include <GearSrc/Endian.h>
|
|
|
|
|
|
|
|
|
|
#include <stb_ds.h>
|
2026-01-29 15:23:28 +09:00
|
|
|
|
|
|
|
|
GSNetClient GSNetClientOpen(GSClient client, const char* hostname, int port) {
|
|
|
|
|
GSNetClient net = malloc(sizeof(*net));
|
|
|
|
|
|
|
|
|
|
memset(net, 0, sizeof(*net));
|
|
|
|
|
|
|
|
|
|
net->engine = client->engine;
|
|
|
|
|
|
2026-01-29 19:42:00 +09:00
|
|
|
if((net->sock = GSNetBaseClient(hostname, port, &net->address)) < 0) {
|
2026-01-29 15:23:28 +09:00
|
|
|
GSLog(client->engine, GSLogError, "Failed to initialize socket");
|
|
|
|
|
GSNetClientClose(net);
|
|
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-29 17:48:51 +09:00
|
|
|
net->state.engine = net->engine;
|
|
|
|
|
|
2026-01-29 20:38:17 +09:00
|
|
|
int i;
|
2026-01-29 20:39:10 +09:00
|
|
|
for(i = 0; i < 5; i++) {
|
2026-01-29 20:38:17 +09:00
|
|
|
GSBinary b;
|
|
|
|
|
b.data = malloc(512 * 5);
|
|
|
|
|
b.size = 512 * 5;
|
|
|
|
|
arrput(net->state.tx, b);
|
|
|
|
|
}
|
2026-01-29 17:28:39 +09:00
|
|
|
|
2026-01-29 15:23:28 +09:00
|
|
|
return net;
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-29 16:43:44 +09:00
|
|
|
void GSNetClientStep(GSNetClient net) {
|
2026-01-29 17:48:51 +09:00
|
|
|
GSNetPacket pkt;
|
2026-01-29 16:43:44 +09:00
|
|
|
|
2026-01-29 20:39:10 +09:00
|
|
|
do {
|
2026-01-29 20:38:17 +09:00
|
|
|
while(GSNetBaseHasData(net->sock)) {
|
|
|
|
|
GSNetPacketRead(net->sock, &pkt, &net->address);
|
|
|
|
|
GSNetStateRead(&net->state, net->sock, &pkt, &net->address);
|
|
|
|
|
}
|
2026-01-29 17:28:39 +09:00
|
|
|
|
2026-01-29 20:38:17 +09:00
|
|
|
GSNetStateWrite(&net->state, net->sock, &net->address);
|
2026-01-29 20:39:10 +09:00
|
|
|
} while(GSNetBaseHasData(net->sock));
|
2026-01-29 16:43:44 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GSNetClientClose(GSNetClient net) {
|
2026-01-29 19:42:00 +09:00
|
|
|
if(net->sock != NULL) GSNetBaseClose(net->sock);
|
2026-01-29 15:23:28 +09:00
|
|
|
|
2026-01-29 16:43:44 +09:00
|
|
|
free(net);
|
2026-01-29 15:23:28 +09:00
|
|
|
}
|