00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef EVENT2_LISTENER_H_INCLUDED_
00028 #define EVENT2_LISTENER_H_INCLUDED_
00029
00030 #include <event2/visibility.h>
00031
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035
00036 #include <event2/event.h>
00037
00038 struct sockaddr;
00039 struct evconnlistener;
00040
00050 typedef void (*evconnlistener_cb)(struct evconnlistener *, evutil_socket_t, struct sockaddr *, int socklen, void *);
00051
00058 typedef void (*evconnlistener_errorcb)(struct evconnlistener *, void *);
00059
00062 #define LEV_OPT_LEAVE_SOCKETS_BLOCKING (1u<<0)
00063
00065 #define LEV_OPT_CLOSE_ON_FREE (1u<<1)
00066
00067 #define LEV_OPT_CLOSE_ON_EXEC (1u<<2)
00068
00070 #define LEV_OPT_REUSEABLE (1u<<3)
00071
00073 #define LEV_OPT_THREADSAFE (1u<<4)
00074
00076 #define LEV_OPT_DISABLED (1u<<5)
00077
00090 #define LEV_OPT_DEFERRED_ACCEPT (1u<<6)
00091
00099 #define LEV_OPT_REUSEABLE_PORT (1u<<7)
00100
00118 EVENT2_EXPORT_SYMBOL
00119 struct evconnlistener *evconnlistener_new(struct event_base *base,
00120 evconnlistener_cb cb, void *ptr, unsigned flags, int backlog,
00121 evutil_socket_t fd);
00137 EVENT2_EXPORT_SYMBOL
00138 struct evconnlistener *evconnlistener_new_bind(struct event_base *base,
00139 evconnlistener_cb cb, void *ptr, unsigned flags, int backlog,
00140 const struct sockaddr *sa, int socklen);
00144 EVENT2_EXPORT_SYMBOL
00145 void evconnlistener_free(struct evconnlistener *lev);
00149 EVENT2_EXPORT_SYMBOL
00150 int evconnlistener_enable(struct evconnlistener *lev);
00154 EVENT2_EXPORT_SYMBOL
00155 int evconnlistener_disable(struct evconnlistener *lev);
00156
00158 EVENT2_EXPORT_SYMBOL
00159 struct event_base *evconnlistener_get_base(struct evconnlistener *lev);
00160
00162 EVENT2_EXPORT_SYMBOL
00163 evutil_socket_t evconnlistener_get_fd(struct evconnlistener *lev);
00164
00167 EVENT2_EXPORT_SYMBOL
00168 void evconnlistener_set_cb(struct evconnlistener *lev,
00169 evconnlistener_cb cb, void *arg);
00170
00172 EVENT2_EXPORT_SYMBOL
00173 void evconnlistener_set_error_cb(struct evconnlistener *lev,
00174 evconnlistener_errorcb errorcb);
00175
00176 #ifdef __cplusplus
00177 }
00178 #endif
00179
00180 #endif