diff options
Diffstat (limited to 'source4/libcli/composite/composite.c')
-rw-r--r-- | source4/libcli/composite/composite.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/source4/libcli/composite/composite.c b/source4/libcli/composite/composite.c index 2b8ddea897..f04309bbfb 100644 --- a/source4/libcli/composite/composite.c +++ b/source4/libcli/composite/composite.c @@ -44,3 +44,27 @@ NTSTATUS composite_wait(struct composite_context *c) } +/* + callback from composite_trigger_done() +*/ +static void composite_trigger(struct event_context *ev, struct timed_event *te, + struct timeval t, void *ptr) +{ + struct composite_context *c = talloc_get_type(ptr, struct composite_context); + c->state = SMBCLI_REQUEST_DONE; + if (c->async.fn) { + c->async.fn(c); + } +} + + +/* + trigger an immediate 'done' event on a composite context + this is used when the composite code works out that the call + can be completed without waiting for any external event +*/ +void composite_trigger_done(struct composite_context *c) +{ + /* a zero timeout means immediate */ + event_add_timed(c->event_ctx, c, timeval_zero(), composite_trigger, c); +} |