diff options
-rw-r--r-- | lib/tevent/tevent.exports | 1 | ||||
-rw-r--r-- | lib/tevent/tevent.h | 64 | ||||
-rw-r--r-- | lib/tevent/tevent.mk | 1 | ||||
-rw-r--r-- | lib/tevent/tevent.signatures | 3 | ||||
-rw-r--r-- | lib/tevent/tevent_internal.h | 50 |
5 files changed, 67 insertions, 52 deletions
diff --git a/lib/tevent/tevent.exports b/lib/tevent/tevent.exports index 7d55c17e5d..b1554dff4e 100644 --- a/lib/tevent/tevent.exports +++ b/lib/tevent/tevent.exports @@ -21,6 +21,7 @@ tevent_queue_length; tevent_queue_start; tevent_queue_stop; + tevent_register_backend; _tevent_req_callback_data; _tevent_req_create; _tevent_req_data; diff --git a/lib/tevent/tevent.h b/lib/tevent/tevent.h index 2cbd175e73..56ae0ee082 100644 --- a/lib/tevent/tevent.h +++ b/lib/tevent/tevent.h @@ -358,6 +358,70 @@ int _tevent_loop_until(struct tevent_context *ev, _tevent_loop_until(ev, finished, private_data, __location__) #endif + +/** + * The following structure and registration functions are exclusively + * needed for people writing and pluggin a different event engine. + * There is nothing useful for normal tevent user in here. + */ + +struct tevent_ops { + /* context init */ + int (*context_init)(struct tevent_context *ev); + + /* fd_event functions */ + struct tevent_fd *(*add_fd)(struct tevent_context *ev, + TALLOC_CTX *mem_ctx, + int fd, uint16_t flags, + tevent_fd_handler_t handler, + void *private_data, + const char *handler_name, + const char *location); + void (*set_fd_close_fn)(struct tevent_fd *fde, + tevent_fd_close_fn_t close_fn); + uint16_t (*get_fd_flags)(struct tevent_fd *fde); + void (*set_fd_flags)(struct tevent_fd *fde, uint16_t flags); + + /* timed_event functions */ + struct tevent_timer *(*add_timer)(struct tevent_context *ev, + TALLOC_CTX *mem_ctx, + struct timeval next_event, + tevent_timer_handler_t handler, + void *private_data, + const char *handler_name, + const char *location); + + /* immediate event functions */ + void (*schedule_immediate)(struct tevent_immediate *im, + struct tevent_context *ev, + tevent_immediate_handler_t handler, + void *private_data, + const char *handler_name, + const char *location); + + /* signal functions */ + struct tevent_signal *(*add_signal)(struct tevent_context *ev, + TALLOC_CTX *mem_ctx, + int signum, int sa_flags, + tevent_signal_handler_t handler, + void *private_data, + const char *handler_name, + const char *location); + + /* loop functions */ + int (*loop_once)(struct tevent_context *ev, const char *location); + int (*loop_wait)(struct tevent_context *ev, const char *location); +}; + +bool tevent_register_backend(const char *name, const struct tevent_ops *ops); + + +/** + * The following definitions are usueful only for compatibility with the + * implementation originally developed within the samba4 code and will be + * soon removed. Please NEVER use in new code. + */ + #ifdef TEVENT_COMPAT_DEFINES #define event_context tevent_context diff --git a/lib/tevent/tevent.mk b/lib/tevent/tevent.mk index 82cc4a0860..480366e938 100644 --- a/lib/tevent/tevent.mk +++ b/lib/tevent/tevent.mk @@ -22,7 +22,6 @@ installdirs:: installheaders:: installdirs cp $(srcdir)/tevent.h $(DESTDIR)$(includedir) - cp $(srcdir)/tevent_internal.h $(DESTDIR)$(includedir) installlibs:: installdirs cp tevent.pc $(DESTDIR)$(libdir)/pkgconfig diff --git a/lib/tevent/tevent.signatures b/lib/tevent/tevent.signatures index fab5f64559..190522f8ec 100644 --- a/lib/tevent/tevent.signatures +++ b/lib/tevent/tevent.signatures @@ -7,7 +7,7 @@ uint16_t tevent_fd_get_flags (struct tevent_fd *); void tevent_fd_set_flags (struct tevent_fd *, uint16_t); _Bool tevent_signal_support (struct tevent_context *); void tevent_set_abort_fn (void (*) (const char *)); -int tevent_set_debug (struct tevent_context *, void (*) (void *, enum tevent_debug_level, const char *, __va_list_tag *), void *); +int tevent_set_debug (struct tevent_context *, void (*) (void *, enum tevent_debug_level, const char *, va_list), void *); int tevent_set_debug_stderr (struct tevent_context *); void tevent_req_set_callback (struct tevent_req *, tevent_req_fn, void *); void *_tevent_req_callback_data (struct tevent_req *); @@ -44,6 +44,7 @@ size_t tevent_queue_length (struct tevent_queue *); void tevent_loop_allow_nesting (struct tevent_context *); void tevent_loop_set_nesting_hook (struct tevent_context *, tevent_nesting_hook, void *); int _tevent_loop_until (struct tevent_context *, _Bool (*) (void *), void *, const char *); +_Bool tevent_register_backend (const char *, const struct tevent_ops *); struct tevent_context *tevent_context_init (TALLOC_CTX *); struct tevent_context *tevent_context_init_byname (TALLOC_CTX *, const char *); const char **tevent_backend_list (TALLOC_CTX *); diff --git a/lib/tevent/tevent_internal.h b/lib/tevent/tevent_internal.h index 36abfa4482..e260524208 100644 --- a/lib/tevent/tevent_internal.h +++ b/lib/tevent/tevent_internal.h @@ -130,54 +130,6 @@ struct tevent_req { } internal; }; -struct tevent_ops { - /* conntext init */ - int (*context_init)(struct tevent_context *ev); - - /* fd_event functions */ - struct tevent_fd *(*add_fd)(struct tevent_context *ev, - TALLOC_CTX *mem_ctx, - int fd, uint16_t flags, - tevent_fd_handler_t handler, - void *private_data, - const char *handler_name, - const char *location); - void (*set_fd_close_fn)(struct tevent_fd *fde, - tevent_fd_close_fn_t close_fn); - uint16_t (*get_fd_flags)(struct tevent_fd *fde); - void (*set_fd_flags)(struct tevent_fd *fde, uint16_t flags); - - /* timed_event functions */ - struct tevent_timer *(*add_timer)(struct tevent_context *ev, - TALLOC_CTX *mem_ctx, - struct timeval next_event, - tevent_timer_handler_t handler, - void *private_data, - const char *handler_name, - const char *location); - - /* immediate event functions */ - void (*schedule_immediate)(struct tevent_immediate *im, - struct tevent_context *ev, - tevent_immediate_handler_t handler, - void *private_data, - const char *handler_name, - const char *location); - - /* signal functions */ - struct tevent_signal *(*add_signal)(struct tevent_context *ev, - TALLOC_CTX *mem_ctx, - int signum, int sa_flags, - tevent_signal_handler_t handler, - void *private_data, - const char *handler_name, - const char *location); - - /* loop functions */ - int (*loop_once)(struct tevent_context *ev, const char *location); - int (*loop_wait)(struct tevent_context *ev, const char *location); -}; - struct tevent_fd { struct tevent_fd *prev, *next; struct tevent_context *event_ctx; @@ -283,8 +235,6 @@ struct tevent_context { }; -bool tevent_register_backend(const char *name, const struct tevent_ops *ops); - int tevent_common_context_destructor(struct tevent_context *ev); int tevent_common_loop_wait(struct tevent_context *ev, const char *location); |