base
This commit is contained in:
parent
0286bd63f1
commit
6a68ba0bd0
7 changed files with 78 additions and 8 deletions
|
|
@ -6,6 +6,7 @@
|
|||
#include <GearSrc/Server.h>
|
||||
#include <GearSrc/Resource.h>
|
||||
#include <GearSrc/String.h>
|
||||
#include <GearSrc/Net.h>
|
||||
|
||||
#include <stb_ds.h>
|
||||
|
||||
|
|
@ -67,27 +68,21 @@ GSEngine GSEngineCreate(GSEngineParam* param) {
|
|||
|
||||
if(engine != NULL && param->client && (engine->client = GSClientCreate(engine)) == NULL) {
|
||||
GSLog(engine, GSLogError, "Failed to create client");
|
||||
|
||||
GSEngineDestroy(engine);
|
||||
|
||||
engine = NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(engine != NULL && param->server && (engine->server = GSServerCreate(engine)) == NULL) {
|
||||
GSLog(engine, GSLogError, "Failed to create server");
|
||||
|
||||
GSEngineDestroy(engine);
|
||||
|
||||
engine = NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(param->client) engine->shutdown++;
|
||||
if(param->server) engine->shutdown++;
|
||||
|
||||
if(engine == NULL) {
|
||||
GSLog(engine, GSLogError, "Failed to create engine");
|
||||
}
|
||||
|
||||
return engine;
|
||||
}
|
||||
|
||||
|
|
@ -110,6 +105,7 @@ void GSEngineParamInit(GSEngineParam* param) {
|
|||
|
||||
param->server = 0;
|
||||
param->client = 1;
|
||||
param->port = GSNetDefaultPort;
|
||||
param->gl_swapbuffer = NULL;
|
||||
param->ready = NULL;
|
||||
param->sleep = NULL;
|
||||
|
|
|
|||
|
|
@ -1 +1,26 @@
|
|||
#include <GearSrc/Net.h>
|
||||
|
||||
#include <GearSrc/Log.h>
|
||||
|
||||
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->fd = GSNetBaseClient(hostname, port)) < 0) {
|
||||
GSLog(client->engine, GSLogError, "Failed to initialize socket");
|
||||
GSNetClientClose(net);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return net;
|
||||
}
|
||||
|
||||
void GSNetClientClose(GSNetClient client) {
|
||||
if(client->fd >= 0) GSNetBaseClose(client->fd);
|
||||
|
||||
free(client);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1,26 @@
|
|||
#include <GearSrc/Net.h>
|
||||
|
||||
#include <GearSrc/Log.h>
|
||||
|
||||
GSNetServer GSNetServerOpen(GSServer server, int port) {
|
||||
GSNetServer net = malloc(sizeof(*net));
|
||||
|
||||
memset(net, 0, sizeof(*net));
|
||||
|
||||
net->engine = server->engine;
|
||||
|
||||
if((net->fd = GSNetBaseServer(port)) < 0) {
|
||||
GSLog(server->engine, GSLogError, "Failed to initialize socket");
|
||||
GSNetServerClose(net);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return net;
|
||||
}
|
||||
|
||||
void GSNetServerClose(GSNetServer server) {
|
||||
if(server->fd >= 0) GSNetBaseClose(server->fd);
|
||||
|
||||
free(server);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#include <GearSrc/Server.h>
|
||||
|
||||
#include <GearSrc/Log.h>
|
||||
#include <GearSrc/Net.h>
|
||||
|
||||
GSServer GSServerCreate(GSEngine engine) {
|
||||
GSServer server = malloc(sizeof(*server));
|
||||
|
|
@ -9,12 +10,21 @@ GSServer GSServerCreate(GSEngine engine) {
|
|||
|
||||
server->engine = engine;
|
||||
|
||||
if((server->net = GSNetServerOpen(server, engine->param->port)) == NULL) {
|
||||
GSLog(engine, GSLogError, "Failed to start server");
|
||||
GSServerDestroy(server);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
GSLog(engine, GSLogInfo, "Created server");
|
||||
|
||||
return server;
|
||||
}
|
||||
|
||||
void GSServerDestroy(GSServer server) {
|
||||
if(server->net != NULL) GSNetServerClose(server->net);
|
||||
|
||||
GSLog(server->engine, GSLogInfo, "Destroyed server");
|
||||
|
||||
free(server);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue