summaryrefslogtreecommitdiff
path: root/source4/lib/events/events_internal.h
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2005-02-15 10:36:59 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:10:42 -0500
commit6d17fc3b3e09b15c4a0fa4595ca8d60f426f0243 (patch)
tree960e3b8c20bdb34ba827f9587c92bf34842334cb /source4/lib/events/events_internal.h
parentd816db1bda1ccbd0b4f919abd60fcc879c1055ab (diff)
downloadsamba-6d17fc3b3e09b15c4a0fa4595ca8d60f426f0243.tar.gz
samba-6d17fc3b3e09b15c4a0fa4595ca8d60f426f0243.tar.bz2
samba-6d17fc3b3e09b15c4a0fa4595ca8d60f426f0243.zip
r5407: - this patch makes samba's event loop code more generic and makes
using other implementations possible. This will be mostly usefull for client apps which have there own event loop and want to use our client libs - add a example plugin for liboop (see http://liboop.org) NOTE: this just compiles and is completly untested and is commited only as example metze (This used to be commit b3d0a410efe856e3bcf127f00c31905f5a23cc04)
Diffstat (limited to 'source4/lib/events/events_internal.h')
-rw-r--r--source4/lib/events/events_internal.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/source4/lib/events/events_internal.h b/source4/lib/events/events_internal.h
new file mode 100644
index 0000000000..9fc5a2065f
--- /dev/null
+++ b/source4/lib/events/events_internal.h
@@ -0,0 +1,80 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ generalised event loop handling
+
+ Internal structs
+
+ Copyright (C) Stefan Metzmacher 2005
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+struct event_ops {
+ /* conntext init */
+ int (*context_init)(struct event_context *ev, void *private_data);
+
+ /* fd_event functions */
+ struct fd_event *(*add_fd)(struct event_context *ev,
+ TALLOC_CTX *mem_ctx,
+ int fd, uint16_t flags,
+ event_fd_handler_t handler,
+ void *private_data);
+ uint16_t (*get_fd_flags)(struct fd_event *fde);
+ void (*set_fd_flags)(struct fd_event *fde, uint16_t flags);
+
+ /* timed_event functions */
+ struct timed_event *(*add_timed)(struct event_context *ev,
+ TALLOC_CTX *mem_ctx,
+ struct timeval next_event,
+ event_timed_handler_t handler,
+ void *private_data);
+
+ /* loop functions */
+ int (*loop_once)(struct event_context *ev);
+ int (*loop_wait)(struct event_context *ev);
+};
+
+struct fd_event {
+ struct fd_event *prev, *next;
+ struct event_context *event_ctx;
+ int fd;
+ uint16_t flags; /* see EVENT_FD_* flags */
+ event_fd_handler_t handler;
+ /* this is private for the specific handler */
+ void *private_data;
+ /* this is private for the events_ops implementation */
+ void *additional_data;
+};
+
+struct timed_event {
+ struct timed_event *prev, *next;
+ struct event_context *event_ctx;
+ struct timeval next_event;
+ event_timed_handler_t handler;
+ /* this is private for the specific handler */
+ void *private_data;
+ /* this is private for the events_ops implementation */
+ void *additional_data;
+};
+
+struct event_context {
+ /* the specific events implementation */
+ const struct event_ops *ops;
+ /* this is private for the events_ops implementation */
+ void *additional_data;
+};
+
+const struct event_ops *event_standard_get_ops(void);