43 union vs { |
45 union vs { |
44 VirtualServer *vs; |
46 VirtualServer *vs; |
45 char *vs_name; |
47 char *vs_name; |
46 }; |
48 }; |
47 struct _listener_config { |
49 struct _listener_config { |
48 sstr_t name; |
50 ServerConfiguration *cfg; |
49 sstr_t vs; |
51 sstr_t name; |
50 char *address; |
52 sstr_t vs; |
51 int port; |
53 char *address; |
52 int nacceptors; |
54 int port; |
|
55 int nacceptors; |
53 }; |
56 }; |
54 |
57 |
55 struct _acceptor { |
58 struct _acceptor { |
56 pthread_t tid; |
59 pthread_t tid; |
57 HttpListener *listener; |
60 HttpListener *listener; |
58 }; |
61 }; |
59 |
62 |
60 struct _http_listener { |
63 struct _http_listener { |
61 sstr_t name; |
64 ServerConfiguration *cfg; |
62 union vs default_vs; |
65 sstr_t name; |
63 int port; |
66 union vs default_vs; |
64 int server_socket; |
67 int port; |
65 Acceptor **acceptors; |
68 int server_socket; |
66 int nacceptors; |
69 SessionHandler *session_handler; |
67 SessionHandler *session_handler; |
70 HttpListener *next; |
|
71 Acceptor **acceptors; |
|
72 int nacceptors; |
|
73 uint32_t ref; // reference counter |
68 }; |
74 }; |
69 |
75 |
70 int start_all_listener(); |
76 int start_all_listener(); |
71 |
77 |
|
78 HttpListener* http_listener_create(ListenerConfig *conf); |
|
79 |
|
80 // used by http_listener_create |
72 HttpListener* http_listener_new(ListenerConfig *conf); |
81 HttpListener* http_listener_new(ListenerConfig *conf); |
73 |
82 |
74 int http_listener_start(HttpListener *listener); |
83 int http_listener_start(HttpListener *listener); |
|
84 |
|
85 void http_listener_ref(HttpListener *listener); |
|
86 void http_listener_unref(HttpListener *listener); |
75 |
87 |
76 Acceptor* acceptor_new(HttpListener *listener); |
88 Acceptor* acceptor_new(HttpListener *listener); |
77 |
89 |
78 void acceptor_start(Acceptor *a); |
90 void acceptor_start(Acceptor *a); |
79 |
91 |