diff -r 4417619a9bbd -r 450d2d5f4735 src/server/daemon/httplistener.h --- a/src/server/daemon/httplistener.h Sat Aug 18 11:39:34 2012 +0200 +++ b/src/server/daemon/httplistener.h Sat Oct 06 13:00:07 2012 +0200 @@ -31,6 +31,8 @@ #include "sessionhandler.h" +#include "config.h" + #ifdef __cplusplus extern "C" { #endif @@ -45,11 +47,12 @@ char *vs_name; }; struct _listener_config { - sstr_t name; - sstr_t vs; - char *address; - int port; - int nacceptors; + ServerConfiguration *cfg; + sstr_t name; + sstr_t vs; + char *address; + int port; + int nacceptors; }; struct _acceptor { @@ -58,21 +61,30 @@ }; struct _http_listener { - sstr_t name; - union vs default_vs; - int port; - int server_socket; - Acceptor **acceptors; - int nacceptors; - SessionHandler *session_handler; + ServerConfiguration *cfg; + sstr_t name; + union vs default_vs; + int port; + int server_socket; + SessionHandler *session_handler; + HttpListener *next; + Acceptor **acceptors; + int nacceptors; + uint32_t ref; // reference counter }; int start_all_listener(); +HttpListener* http_listener_create(ListenerConfig *conf); + +// used by http_listener_create HttpListener* http_listener_new(ListenerConfig *conf); int http_listener_start(HttpListener *listener); +void http_listener_ref(HttpListener *listener); +void http_listener_unref(HttpListener *listener); + Acceptor* acceptor_new(HttpListener *listener); void acceptor_start(Acceptor *a);