How to know if all pending tevent_req requests have completed?

Ralph Böhme slow at samba.org
Thu Feb 23 06:45:37 UTC 2017


On Thu, Feb 23, 2017 at 11:18:41AM +1100, Amitay Isaacs wrote:
> Hi tevent experts,
> 
> tevent_req_poll() allows to wait for a specific request.
> 
> If I want to create n requests and wait for all of them to finish, is there
> an easy way to do it?
> 
> Here is an example computation:
> 
> run_event_send()
>    ... run scripts one after the other ...
> 
>    if (timer expires) {
>       run_debug_send()
>       tevent_req_done()
>    }
> 
> In this case, run_debug_send() computation is *not* hanging off the
> run_event_send() request.
> The calling code needs to know that run_event computation has timed out,
> but doesn't really care whether debugging computation is over or not.  The
> debug program can run in the background and log useful debug information
> without affecting the caller.

maybe I don't understand what you're trying to do, but you have N run_event_send
subreqs and each of those requests either calls tevent_req_done or
tevent_req_error(ETIMEDOUT) in case of a timeout.

The caller must have a state with the number of in-flight subrequests and then
you can just count the number of successfull calls and failures in the subreq
callback.

Cheerio!
-slow



More information about the samba-technical mailing list