aboutsummaryrefslogtreecommitdiff
path: root/src/server.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/server.c')
-rw-r--r--src/server.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/server.c b/src/server.c
new file mode 100644
index 0000000..61664c5
--- /dev/null
+++ b/src/server.c
@@ -0,0 +1,38 @@
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "server.h"
+
+
+server_ctx *
+server_init_ctx(server_ctx *ctx, init_cb init_fn)
+{
+ if (!ctx)
+ ctx = (server_ctx *) malloc(sizeof(*ctx));
+ assert(ctx);
+
+ memset(ctx, 0, sizeof(*ctx));
+ if (!init_fn(ctx))
+ return NULL;
+
+ return ctx;
+}
+
+int server_validate_ctx(server_ctx *ctx)
+{
+ assert(ctx);
+ assert(ctx->server_cbs.on_connect && ctx->server_cbs.on_disconnect
+ && ctx->server_cbs.mainloop);
+ assert(ctx->server_cbs.on_free && ctx->server_cbs.on_listen
+ && ctx->server_cbs.on_shutdown);
+ return 0;
+}
+
+int server_mainloop(server_ctx *ctx)
+{
+ while (1) {
+ sleep(1);
+ }
+ return 0;
+}