diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2018-04-05 17:53:27 +0200 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2018-04-07 00:03:28 +0200 |
commit | ebabaa69c0a3ba992895c7a66729e81e0923d5f1 (patch) | |
tree | 39b4a5b90a4f51c98486e8a00898e983b8878a12 /src/server.h |
Initial commit.
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'src/server.h')
-rw-r--r-- | src/server.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/server.h b/src/server.h new file mode 100644 index 0000000..69c3ad7 --- /dev/null +++ b/src/server.h @@ -0,0 +1,46 @@ +#ifndef POTD_SERVER_H +#define POTD_SERVER_H 1 + +#include "socket.h" + +typedef struct server_data { + void *data; +} server_data; + +typedef struct server_session { + void *data; +} server_session; + +typedef int (*on_connect_cb) (struct server_data *data, struct server_session *ses); +typedef int (*on_disconnect_cb) (struct server_data *data, struct server_session *ses); +typedef int (*on_data_cb) (struct server_data *data, struct server_session *ses); +typedef int (*on_free_cb) (struct server_data *data); +typedef int (*on_listen_cb) (struct server_data *data); +typedef int (*on_shutdown_cb) (struct server_data *data); + +typedef struct server_callbacks { + on_connect_cb on_connect; + on_disconnect_cb on_disconnect; + on_data_cb mainloop; + on_free_cb on_free; + on_listen_cb on_listen; + on_shutdown_cb on_shutdown; +} server_callbacks; + +typedef struct server_ctx { + server_callbacks server_cbs; + server_data server_dat; + psocket sock; +} server_ctx; + +typedef int (*init_cb) (struct server_ctx *ctx); + + +server_ctx * +server_init_ctx(server_ctx *ctx, init_cb init_fn); + +int server_validate_ctx(server_ctx *ctx); + +int server_mainloop(server_ctx *ctx); + +#endif |