r15356: Remove unused 'flags' argument from socket_send() and friends.
[bbaumbach/samba-autobuild/.git] / source4 / lib / events / events.c
index 83b013f366327e71f14ddc0fcb6a993c44bd7cb3..585fcb3112aab65ee2cccfe1c0464a4d597a7886 100644 (file)
@@ -115,6 +115,7 @@ struct fd_event *event_add_fd(struct event_context *ev, TALLOC_CTX *mem_ctx,
 */
 uint16_t event_get_fd_flags(struct fd_event *fde)
 {
+       if (!fde) return 0;
        return fde->event_ctx->ops->get_fd_flags(fde);
 }
 
@@ -123,6 +124,7 @@ uint16_t event_get_fd_flags(struct fd_event *fde)
 */
 void event_set_fd_flags(struct fd_event *fde, uint16_t flags)
 {
+       if (!fde) return;
        fde->event_ctx->ops->set_fd_flags(fde, flags);
 }
 
@@ -141,7 +143,7 @@ struct timed_event *event_add_timed(struct event_context *ev, TALLOC_CTX *mem_ct
 /*
   do a single event loop using the events defined in ev 
 */
-int event_loop_once(struct event_context *ev)
+_PUBLIC_ int event_loop_once(struct event_context *ev)
 {
        return ev->ops->loop_once(ev);
 }
@@ -153,3 +155,21 @@ int event_loop_wait(struct event_context *ev)
 {
        return ev->ops->loop_wait(ev);
 }
+
+/*
+  find an event context that is a parent of the given memory context,
+  or create a new event context as a child of the given context if
+  none is found
+
+  This should be used in preference to event_context_init() in places
+  where you would prefer to use the existing event context if possible
+  (which is most situations)
+*/
+struct event_context *event_context_find(TALLOC_CTX *mem_ctx)
+{
+       struct event_context *ev = talloc_find_parent_bytype(mem_ctx, struct event_context);
+       if (ev == NULL) {
+               ev = event_context_init(mem_ctx);
+       }
+       return ev;
+}