libevws  0.1
WebSocketserverlibrary
 All Files Functions Typedefs Enumerations
wslistener.h
Go to the documentation of this file.
1 /*
2  * libevws
3  *
4  * Copyright (c) 2013 github.com/crunchyfrog
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining
7  * a copy of this software and associated documentation files (the
8  * "Software"), to deal in the Software without restriction, including
9  * without limitation the rights to use, copy, modify, merge, publish,
10  * distribute, sublicense, and/or sell copies of the Software, and to
11  * permit persons to whom the Software is furnished to do so, subject to
12  * the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be
15  * included in all copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24  */
25 
26 #ifndef EVWS_WSLISTENER_H_
27 #define EVWS_WSLISTENER_H_
28 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 #include <event2/listener.h>
38 
39 struct sockaddr;
40 struct evwsconnlistener;
41 struct evwsconn;
42 
56 typedef void (*evwsconnlistener_cb)(struct evwsconnlistener *listener,
57  struct evwsconn *conn, struct sockaddr *address, int socklen,
58  void *user_data);
59 
66 typedef void (*evwsconnlistener_errorcb)(struct evwsconnlistener *listener,
67  void *user_data);
68 
86 struct evwsconnlistener *evwsconnlistener_new(struct event_base *base,
87  evwsconnlistener_cb cb, void *user_data, unsigned flags, int backlog,
88  const char* subprotocols[], evutil_socket_t fd);
89 
106 struct evwsconnlistener *evwsconnlistener_new_bind(struct event_base *base,
107  evwsconnlistener_cb cb, void *user_data, unsigned flags, int backlog,
108  const char* subprotocols[], const struct sockaddr *addr, int socklen);
109 
111 void evwsconnlistener_free(struct evwsconnlistener *levws);
112 
114 struct evconnlistener *evconnlistener_get_evconnlistener(
115  struct evwsconnlistener *levws);
116 
118 void evwsconnlistener_set_cb(struct evwsconnlistener *levws,
119  evwsconnlistener_cb cb, void *user_data);
120 
122 void evwsconnlistener_set_error_cb(struct evwsconnlistener *levws,
123  evwsconnlistener_errorcb errorcb);
124 
125 #ifdef __cplusplus
126 }
127 #endif
128 
129 #endif /* EVWS_WSLISTENER_H_ */