summaryrefslogtreecommitdiffstats
path: root/lib/tevent/tevent.h
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2009-06-18 20:06:00 -0400
committerSimo Sorce <idra@samba.org>2009-07-03 08:45:30 -0400
commit30b2014a01b31d66dd76e0562c5d769dfacf167b (patch)
tree53bbb3220dd51e7b2addaa7f23fb87a29da2882e /lib/tevent/tevent.h
parent2738178d1301f9c1c4144c7472c9419911cd816e (diff)
downloadsamba-30b2014a01b31d66dd76e0562c5d769dfacf167b.tar.gz
samba-30b2014a01b31d66dd76e0562c5d769dfacf167b.tar.xz
samba-30b2014a01b31d66dd76e0562c5d769dfacf167b.zip
Expose functions need by backend writers
move publicly needed structures and functions in the public header. Stop installing internal headers. Update the signature and exports files with the new exposed function.
Diffstat (limited to 'lib/tevent/tevent.h')
-rw-r--r--lib/tevent/tevent.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/lib/tevent/tevent.h b/lib/tevent/tevent.h
index 2cbd175e73f..56ae0ee0820 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