= nng_aio(5) // // Copyright 2018 Staysail Systems, Inc. // Copyright 2018 Capitar IT Group BV // // This document is supplied under the terms of the MIT License, a // copy of which should be located in the distribution where this // file was obtained (LICENSE.txt). A copy of the license may also be // found online at https://opensource.org/licenses/MIT. // == NAME nng_aio - asynchronous I/O handle == SYNOPSIS [source, c] ---- #include typedef struct nng_aio nng_aio; ---- == DESCRIPTION An `nng_aio`(((aio))) is an opaque structure used in conjunction with ((asynchronous I/O)) operations. Every asynchronous operation uses one of these structures, each of which can only be used with a single operation at a time. Asynchronous operations are performed without blocking calling application threads. Instead the application registers a "`callback`" function to be executed when the operation is complete (whether successfully or not). This callback will be executed exactly once. The asynchronous I/O framework in _nng_ also supports cancellation of operations that are already in progress (see xref:nng_aio_cancel.3.adoc[`nng_aio_cancel()`]), as well setting a maximum timeout for them to complete within (see xref:nng_aio_set_timeout.3.adoc[`nng_aio_set_timeout()`]). It is also possible to initiate an asynchronous operation, and wait for it to complete using xref:nng_aio_wait.3.adoc[`nng_aio_wait()`]. These structures are created using the xref:nng_aio_alloc.3.adoc[`nng_aio_alloc()`], and destroyed using xref:nng_aio_free.3.adoc[`nng_aio_free()`]. == SEE ALSO [.text-left] xref:nng_aio_abort.3.adoc[nng_aio_abort(3)], xref:nng_aio_alloc.3.adoc[nng_aio_alloc(3)], xref:nng_aio_cancel.3.adoc[nng_aio_cancel(3)], xref:nng_aio_count.3.adoc[nng_aio_count(3)], xref:nng_aio_free.3.adoc[nng_aio_free(3)], xref:nng_aio_get_input.3.adoc[nng_aio_get_input(3)], xref:nng_aio_get_msg.3.adoc[nng_aio_get_msg(3)], xref:nng_aio_get_output.3.adoc[nng_aio_get_output(3)], xref:nng_aio_result.3.adoc[nng_aio_result(3)], xref:nng_aio_set_input.3.adoc[nng_aio_set_input(3)], xref:nng_aio_set_iov.3.adoc[nng_aio_set_iov(3)], xref:nng_aio_set_msg.3.adoc[nng_aio_set_msg(3)], xref:nng_aio_set_timeout.3.adoc[nng_aio_set_timeout(3)], xref:nng_aio_stop.3.adoc[nng_aio_stop(3)], xref:nng_aio_wait.3.adoc[nng_aio_wait(3)], xref:nng_strerror.3.adoc[nng_strerror(3)], xref:nng_aio.5.adoc[nng_aio(5)], xref:nng.7.adoc[nng(7)]