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_
00028 #define _EVENT2_LISTENER_H_
00029
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033
00034 #include <event2/event.h>
00035
00036 struct sockaddr;
00037 struct evconnlistener;
00038
00048 typedef void (*evconnlistener_cb)(struct evconnlistener *, evutil_socket_t, struct sockaddr *, int socklen, void *);
00049
00056 typedef void (*evconnlistener_errorcb)(struct evconnlistener *, void *);
00057
00060 #define LEV_OPT_LEAVE_SOCKETS_BLOCKING (1u<<0)
00061
00063 #define LEV_OPT_CLOSE_ON_FREE (1u<<1)
00064
00065 #define LEV_OPT_CLOSE_ON_EXEC (1u<<2)
00066
00068 #define LEV_OPT_REUSEABLE (1u<<3)
00069
00071 #define LEV_OPT_THREADSAFE (1u<<4)
00072
00090 struct evconnlistener *evconnlistener_new(struct event_base *base,
00091 evconnlistener_cb cb, void *ptr, unsigned flags, int backlog,
00092 evutil_socket_t fd);
00108 struct evconnlistener *evconnlistener_new_bind(struct event_base *base,
00109 evconnlistener_cb cb, void *ptr, unsigned flags, int backlog,
00110 const struct sockaddr *sa, int socklen);
00114 void evconnlistener_free(struct evconnlistener *lev);
00118 int evconnlistener_enable(struct evconnlistener *lev);
00122 int evconnlistener_disable(struct evconnlistener *lev);
00123
00125 struct event_base *evconnlistener_get_base(struct evconnlistener *lev);
00126
00128 evutil_socket_t evconnlistener_get_fd(struct evconnlistener *lev);
00129
00132 void evconnlistener_set_cb(struct evconnlistener *lev,
00133 evconnlistener_cb cb, void *arg);
00134
00136 void evconnlistener_set_error_cb(struct evconnlistener *lev,
00137 evconnlistener_errorcb errorcb);
00138
00139 #ifdef __cplusplus
00140 }
00141 #endif
00142
00143 #endif