X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fio%2Fio.h;h=fe42b53736005c4459c3b56afbbaa87ffe46f04a;hb=a9f9eb8826d7f8cf9a6200967711247d5d3cfe04;hp=1664df65f26e353120762f1ab89abc65ee01f1c9;hpb=3f642347378afc9e1db1768d88c9f5b2baffe9ba;p=ccan diff --git a/ccan/io/io.h b/ccan/io/io.h index 1664df65..fe42b537 100644 --- a/ccan/io/io.h +++ b/ccan/io/io.h @@ -673,6 +673,24 @@ void *io_loop(struct timers *timers, struct timer **expired); */ int io_conn_fd(const struct io_conn *conn); +/** + * io_flush_sync - (synchronously) complete any outstanding output. + * @conn: the connection. + * + * This is generally used as an emergency escape, for example when we + * want to write an error message on a socket before terminating, but it may + * be in the middle of existing I/O. We don't want to service any other + * IO, either. + * + * This returns true if all pending output is complete, false on error. + * The next callback is not called on the conn, but will be as soon as + * io_loop() is called. + * + * See Also: + * io_close_taken_fd + */ +bool io_flush_sync(struct io_conn *conn); + /** * io_time_override - override the normal call for time. * @nowfn: the function to call.