#include #include #include #include GSNetClient GSNetClientOpen(GSClient client, const char* hostname, int port) { GSNetClient net = malloc(sizeof(*net)); memset(net, 0, sizeof(*net)); net->engine = client->engine; if((net->sock = GSNetBaseClient(hostname, port, &net->address)) < 0) { GSLog(client->engine, GSLogError, "Failed to initialize socket"); GSNetClientClose(net); return NULL; } net->state.engine = net->engine; int i; for(i = 0; i < 5; i++){ GSBinary b; b.data = malloc(512 * 5); b.size = 512 * 5; arrput(net->state.tx, b); } return net; } void GSNetClientStep(GSNetClient net) { GSNetPacket pkt; do{ while(GSNetBaseHasData(net->sock)) { GSNetPacketRead(net->sock, &pkt, &net->address); GSNetStateRead(&net->state, net->sock, &pkt, &net->address); } GSNetStateWrite(&net->state, net->sock, &net->address); }while(GSNetBaseHasData(net->sock)); } void GSNetClientClose(GSNetClient net) { if(net->sock != NULL) GSNetBaseClose(net->sock); free(net); }