#ifndef SERVER_H #define SERVER_H #include #include #include #include #include "common.h" #include "connections.h" #include "db.h" #include "workqueue.h" struct server { struct event_base *base; struct evdns_base *evdns_base; pthread_mutex_t listeners_mutex; struct evconnlistener **listeners; size_t listeners_allocated; size_t listeners_used; SSL_CTX *ssl_ctx; struct database db; /* a collection of all connections */ struct connections connections; /* worker thread wrangler */ struct workqueue workqueue; /* server lua context, currently to load and parse config file */ lua_State *L; }; /* each worker thread gets a reference to the server and its own lua state */ struct server_worker_context { struct server *server; lua_State *L; }; struct server * server_new(void); int server_init(struct server *s, char *conf_file); void server_free(struct server *s); void server_heartbeat_event(evutil_socket_t, short, void *); int server_refresh_ssl_context(lua_State *, struct server *); #endif /* SERVER_H */