diff options
Diffstat (limited to 'newref/book/api/aio/index.html')
| -rw-r--r-- | newref/book/api/aio/index.html | 77 |
1 files changed, 71 insertions, 6 deletions
diff --git a/newref/book/api/aio/index.html b/newref/book/api/aio/index.html index bbfd3472..4be0ff78 100644 --- a/newref/book/api/aio/index.html +++ b/newref/book/api/aio/index.html @@ -88,7 +88,7 @@ <nav id="sidebar" class="sidebar" aria-label="Table of contents"> <div class="sidebar-scrollbox"> - <ol class="chapter"><li class="chapter-item expanded "><a href="../../chapter_1.html"><strong aria-hidden="true">1.</strong> Chapter 1</a></li><li class="chapter-item expanded "><a href="../../overview/index.html"><strong aria-hidden="true">2.</strong> Overview</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../overview/raw.html"><strong aria-hidden="true">2.1.</strong> RAW mode</a></li></ol></li><li class="chapter-item expanded "><a href="../../protocols/index.html"><strong aria-hidden="true">3.</strong> Protocols</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../protocols/bus.html"><strong aria-hidden="true">3.1.</strong> BUS</a></li><li class="chapter-item "><a href="../../protocols/rep.html"><strong aria-hidden="true">3.2.</strong> REP</a></li></ol></li><li class="chapter-item expanded "><a href="../../transports/index.html"><strong aria-hidden="true">4.</strong> Transports</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../transports/inproc.html"><strong aria-hidden="true">4.1.</strong> INPROC</a></li><li class="chapter-item "><a href="../../transports/tcp.html"><strong aria-hidden="true">4.2.</strong> TCP</a></li></ol></li><li class="chapter-item expanded "><a href="../../api/index.html"><strong aria-hidden="true">5.</strong> API Reference</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../api/aio/index.html" class="active"><strong aria-hidden="true">5.1.</strong> Asynchronous I/O</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/nng_aio.html"><strong aria-hidden="true">5.1.1.</strong> nng_aio</a></li><li class="chapter-item "><a href="../../api/nng_aio_abort.html"><strong aria-hidden="true">5.1.2.</strong> nng_aio_abort</a></li><li class="chapter-item "><a href="../../api/nng_aio_alloc.html"><strong aria-hidden="true">5.1.3.</strong> nng_aio_alloc</a></li><li class="chapter-item "><a href="../../api/nng_aio_busy.html"><strong aria-hidden="true">5.1.4.</strong> nng_aio_busy</a></li><li class="chapter-item "><a href="../../api/nng_aio_cancel.html"><strong aria-hidden="true">5.1.5.</strong> nng_aio_cancel</a></li><li class="chapter-item "><a href="../../api/nng_aio_count.html"><strong aria-hidden="true">5.1.6.</strong> nng_aio_count</a></li><li class="chapter-item "><a href="../../api/nng_aio_free.html"><strong aria-hidden="true">5.1.7.</strong> nng_aio_free</a></li><li class="chapter-item "><a href="../../api/nng_aio_get_msg.html"><strong aria-hidden="true">5.1.8.</strong> nng_aio_get_msg</a></li><li class="chapter-item "><a href="../../api/nng_aio_get_output.html"><strong aria-hidden="true">5.1.9.</strong> nng_aio_get_output</a></li><li class="chapter-item "><a href="../../api/nng_aio_result.html"><strong aria-hidden="true">5.1.10.</strong> nng_aio_result</a></li><li class="chapter-item "><a href="../../api/nng_aio_set_input.html"><strong aria-hidden="true">5.1.11.</strong> nng_aio_set_input</a></li><li class="chapter-item "><a href="../../api/nng_aio_set_iov.html"><strong aria-hidden="true">5.1.12.</strong> nng_aio_set_iov</a></li><li class="chapter-item "><a href="../../api/nng_aio_set_msg.html"><strong aria-hidden="true">5.1.13.</strong> nng_aio_set_msg</a></li><li class="chapter-item "><a href="../../api/nng_aio_set_timeout.html"><strong aria-hidden="true">5.1.14.</strong> nng_aio_set_timeout</a></li><li class="chapter-item "><a href="../../api/nng_aio_stop.html"><strong aria-hidden="true">5.1.15.</strong> nng_aio_stop</a></li><li class="chapter-item "><a href="../../api/nng_aio_wait.html"><strong aria-hidden="true">5.1.16.</strong> nng_aio_wait</a></li></ol></li><li class="chapter-item "><a href="../../api/aio_provider.html"><strong aria-hidden="true">5.2.</strong> Asynchronous I/O for Providers</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/nng_aio_begin.html"><strong aria-hidden="true">5.2.1.</strong> nng_aio_begin</a></li><li class="chapter-item "><a href="../../api/nng_aio_defer.html"><strong aria-hidden="true">5.2.2.</strong> nng_aio_defer</a></li><li class="chapter-item "><a href="../../api/nng_aio_finish.html"><strong aria-hidden="true">5.2.3.</strong> nng_aio_finish</a></li><li class="chapter-item "><a href="../../api/nng_aio_get_input.html"><strong aria-hidden="true">5.2.4.</strong> nng_aio_get_input</a></li><li class="chapter-item "><a href="../../api/nng_aio_set_output.html"><strong aria-hidden="true">5.2.5.</strong> nng_aio_set_output</a></li></ol></li><li class="chapter-item "><a href="../../api/general.html"><strong aria-hidden="true">5.3.</strong> General Purpose Functions</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/nng_alloc.html"><strong aria-hidden="true">5.3.1.</strong> nng_alloc</a></li><li class="chapter-item "><a href="../../api/nng_clock.html"><strong aria-hidden="true">5.3.2.</strong> nng_clock</a></li><li class="chapter-item "><a href="../../api/nng_cv_alloc.html"><strong aria-hidden="true">5.3.3.</strong> nng_cv_alloc</a></li><li class="chapter-item "><a href="../../api/nng_cv_free.html"><strong aria-hidden="true">5.3.4.</strong> nng_cv_free</a></li><li class="chapter-item "><a href="../../api/nng_cv_until.html"><strong aria-hidden="true">5.3.5.</strong> nng_cv_until</a></li><li class="chapter-item "><a href="../../api/nng_cv_wait.html"><strong aria-hidden="true">5.3.6.</strong> nng_cv_wait</a></li><li class="chapter-item "><a href="../../api/nng_cv_wake.html"><strong aria-hidden="true">5.3.7.</strong> nng_cv_wake</a></li><li class="chapter-item "><a href="../../api/nng_cv_wake1.html"><strong aria-hidden="true">5.3.8.</strong> nng_cv_wake1</a></li><li class="chapter-item "><a href="../../api/nng_free.html"><strong aria-hidden="true">5.3.9.</strong> nng_free</a></li></ol></li><li class="chapter-item "><a href="../../api/context.html"><strong aria-hidden="true">5.4.</strong> Context Functions</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/nng_ctx.html"><strong aria-hidden="true">5.4.1.</strong> nng_ctx</a></li><li class="chapter-item "><a href="../../api/nng_ctx_close.html"><strong aria-hidden="true">5.4.2.</strong> nng_ctx_close</a></li><li class="chapter-item "><a href="../../api/nng_ctx_get.html"><strong aria-hidden="true">5.4.3.</strong> nng_ctx_get</a></li><li class="chapter-item "><a href="../../api/nng_ctx_getopt.html"><strong aria-hidden="true">5.4.4.</strong> nng_ctx_getopt</a></li><li class="chapter-item "><a href="../../api/nng_ctx_id.html"><strong aria-hidden="true">5.4.5.</strong> nng_ctx_id</a></li><li class="chapter-item "><a href="../../api/nng_ctx_open.html"><strong aria-hidden="true">5.4.6.</strong> nng_ctx_open</a></li><li class="chapter-item "><a href="../../api/nng_ctx_recv.html"><strong aria-hidden="true">5.4.7.</strong> nng_ctx_recv</a></li><li class="chapter-item "><a href="../../api/nng_ctx_recvmsg.html"><strong aria-hidden="true">5.4.8.</strong> nng_ctx_recvmsg</a></li><li class="chapter-item "><a href="../../api/nng_ctx_send.html"><strong aria-hidden="true">5.4.9.</strong> nng_ctx_send</a></li><li class="chapter-item "><a href="../../api/nng_ctx_sendmsg.html"><strong aria-hidden="true">5.4.10.</strong> nng_ctx_sendmsg</a></li><li class="chapter-item "><a href="../../api/nng_ctx_set.html"><strong aria-hidden="true">5.4.11.</strong> nng_ctx_set</a></li><li class="chapter-item "><a href="../../api/nng_ctx_setopt.html"><strong aria-hidden="true">5.4.12.</strong> nng_ctx_setopt</a></li></ol></li><li class="chapter-item "><a href="../../api/protocol.html"><strong aria-hidden="true">5.5.</strong> Protocol Sockets</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/nng_bus_open.html"><strong aria-hidden="true">5.5.1.</strong> nng_bus_open</a></li><li class="chapter-item "><a href="../../api/nng_close.html"><strong aria-hidden="true">5.5.2.</strong> nng_close</a></li></ol></li><li class="chapter-item "><a href="../../api/compat/index.html"><strong aria-hidden="true">5.6.</strong> Legacy Compatibility</a></li></ol></li><li class="chapter-item expanded "><a href="../../indexing.html"><strong aria-hidden="true">6.</strong> Index</a></li></ol> + <ol class="chapter"><li class="chapter-item expanded "><a href="../../chapter_1.html"><strong aria-hidden="true">1.</strong> Chapter 1</a></li><li class="chapter-item expanded "><a href="../../overview/index.html"><strong aria-hidden="true">2.</strong> Overview</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../overview/raw.html"><strong aria-hidden="true">2.1.</strong> RAW mode</a></li></ol></li><li class="chapter-item expanded "><a href="../../protocols/index.html"><strong aria-hidden="true">3.</strong> Protocols</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../protocols/bus.html"><strong aria-hidden="true">3.1.</strong> BUS</a></li><li class="chapter-item "><a href="../../protocols/pub.html"><strong aria-hidden="true">3.2.</strong> PUB</a></li><li class="chapter-item "><a href="../../protocols/rep.html"><strong aria-hidden="true">3.3.</strong> REP</a></li></ol></li><li class="chapter-item expanded "><a href="../../transports/index.html"><strong aria-hidden="true">4.</strong> Transports</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../transports/inproc.html"><strong aria-hidden="true">4.1.</strong> INPROC</a></li><li class="chapter-item "><a href="../../transports/tcp.html"><strong aria-hidden="true">4.2.</strong> TCP</a></li></ol></li><li class="chapter-item expanded "><a href="../../api/index.html"><strong aria-hidden="true">5.</strong> API Reference</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/msg/index.html"><strong aria-hidden="true">5.1.</strong> Messages</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/msg/nng_msg_alloc.html"><strong aria-hidden="true">5.1.1.</strong> nng_msg_alloc</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_append.html"><strong aria-hidden="true">5.1.2.</strong> nng_msg_append</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_body.html"><strong aria-hidden="true">5.1.3.</strong> nng_msg_body</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_capacity.html"><strong aria-hidden="true">5.1.4.</strong> nng_msg_capacity</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_chop.html"><strong aria-hidden="true">5.1.5.</strong> nng_msg_chop</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_clear.html"><strong aria-hidden="true">5.1.6.</strong> nng_msg_clear</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_dup.html"><strong aria-hidden="true">5.1.7.</strong> nng_msg_dup</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_free.html"><strong aria-hidden="true">5.1.8.</strong> nng_msg_free</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_get_pipe.html"><strong aria-hidden="true">5.1.9.</strong> nng_msg_get_pipe</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_header.html"><strong aria-hidden="true">5.1.10.</strong> nng_msg_header</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_header_append.html"><strong aria-hidden="true">5.1.11.</strong> nng_msg_header_append</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_header_chop.html"><strong aria-hidden="true">5.1.12.</strong> nng_msg_header_chop</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_header_clear.html"><strong aria-hidden="true">5.1.13.</strong> nng_msg_header_clear</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_header_insert.html"><strong aria-hidden="true">5.1.14.</strong> nng_msg_header_insert</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_header_len.html"><strong aria-hidden="true">5.1.15.</strong> nng_msg_header_len</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_header_trim.html"><strong aria-hidden="true">5.1.16.</strong> nng_msg_header_trim</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_insert.html"><strong aria-hidden="true">5.1.17.</strong> nng_msg_insert</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_len.html"><strong aria-hidden="true">5.1.18.</strong> nng_msg_len</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_realloc.html"><strong aria-hidden="true">5.1.19.</strong> nng_msg_realloc</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_reserve.html"><strong aria-hidden="true">5.1.20.</strong> nng_msg_reserve</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_set_pipe.html"><strong aria-hidden="true">5.1.21.</strong> nng_msg_set_pipe</a></li><li class="chapter-item "><a href="../../api/msg/nng_msg_trim.html"><strong aria-hidden="true">5.1.22.</strong> nng_msg_trim</a></li></ol></li><li class="chapter-item "><a href="../../api/socket/index.html"><strong aria-hidden="true">5.2.</strong> Sockets</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/socket/nng_bus_open.html"><strong aria-hidden="true">5.2.1.</strong> nng_bus_open</a></li><li class="chapter-item "><a href="../../api/socket/nng_close.html"><strong aria-hidden="true">5.2.2.</strong> nng_close</a></li><li class="chapter-item "><a href="../../api/socket/nng_pub_open.html"><strong aria-hidden="true">5.2.3.</strong> nng_pub_open</a></li></ol></li><li class="chapter-item "><a href="../../api/context/index.html"><strong aria-hidden="true">5.3.</strong> Contexts</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/context/nng_ctx_close.html"><strong aria-hidden="true">5.3.1.</strong> nng_ctx_close</a></li><li class="chapter-item "><a href="../../api/context/nng_ctx_get.html"><strong aria-hidden="true">5.3.2.</strong> nng_ctx_get</a></li><li class="chapter-item "><a href="../../api/context/nng_ctx_getopt.html"><strong aria-hidden="true">5.3.3.</strong> nng_ctx_getopt</a></li><li class="chapter-item "><a href="../../api/context/nng_ctx_id.html"><strong aria-hidden="true">5.3.4.</strong> nng_ctx_id</a></li><li class="chapter-item "><a href="../../api/context/nng_ctx_open.html"><strong aria-hidden="true">5.3.5.</strong> nng_ctx_open</a></li><li class="chapter-item "><a href="../../api/context/nng_ctx_recv.html"><strong aria-hidden="true">5.3.6.</strong> nng_ctx_recv</a></li><li class="chapter-item "><a href="../../api/context/nng_ctx_recvmsg.html"><strong aria-hidden="true">5.3.7.</strong> nng_ctx_recvmsg</a></li><li class="chapter-item "><a href="../../api/context/nng_ctx_send.html"><strong aria-hidden="true">5.3.8.</strong> nng_ctx_send</a></li><li class="chapter-item "><a href="../../api/context/nng_ctx_sendmsg.html"><strong aria-hidden="true">5.3.9.</strong> nng_ctx_sendmsg</a></li><li class="chapter-item "><a href="../../api/context/nng_ctx_set.html"><strong aria-hidden="true">5.3.10.</strong> nng_ctx_set</a></li><li class="chapter-item "><a href="../../api/context/nng_ctx_setopt.html"><strong aria-hidden="true">5.3.11.</strong> nng_ctx_setopt</a></li></ol></li><li class="chapter-item expanded "><a href="../../api/aio/index.html" class="active"><strong aria-hidden="true">5.4.</strong> Asynchronous I/O</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/aio/nng_aio_abort.html"><strong aria-hidden="true">5.4.1.</strong> nng_aio_abort</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_alloc.html"><strong aria-hidden="true">5.4.2.</strong> nng_aio_alloc</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_busy.html"><strong aria-hidden="true">5.4.3.</strong> nng_aio_busy</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_cancel.html"><strong aria-hidden="true">5.4.4.</strong> nng_aio_cancel</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_count.html"><strong aria-hidden="true">5.4.5.</strong> nng_aio_count</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_free.html"><strong aria-hidden="true">5.4.6.</strong> nng_aio_free</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_get_msg.html"><strong aria-hidden="true">5.4.7.</strong> nng_aio_get_msg</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_get_output.html"><strong aria-hidden="true">5.4.8.</strong> nng_aio_get_output</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_result.html"><strong aria-hidden="true">5.4.9.</strong> nng_aio_result</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_set_input.html"><strong aria-hidden="true">5.4.10.</strong> nng_aio_set_input</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_set_iov.html"><strong aria-hidden="true">5.4.11.</strong> nng_aio_set_iov</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_set_msg.html"><strong aria-hidden="true">5.4.12.</strong> nng_aio_set_msg</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_set_timeout.html"><strong aria-hidden="true">5.4.13.</strong> nng_aio_set_timeout</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_stop.html"><strong aria-hidden="true">5.4.14.</strong> nng_aio_stop</a></li><li class="chapter-item "><a href="../../api/aio/nng_aio_wait.html"><strong aria-hidden="true">5.4.15.</strong> nng_aio_wait</a></li></ol></li><li class="chapter-item "><a href="../../api/aio_provider/index.html"><strong aria-hidden="true">5.5.</strong> Asynchronous I/O for Providers</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/aio_provider/nng_aio_begin.html"><strong aria-hidden="true">5.5.1.</strong> nng_aio_begin</a></li><li class="chapter-item "><a href="../../api/aio_provider/nng_aio_defer.html"><strong aria-hidden="true">5.5.2.</strong> nng_aio_defer</a></li><li class="chapter-item "><a href="../../api/aio_provider/nng_aio_finish.html"><strong aria-hidden="true">5.5.3.</strong> nng_aio_finish</a></li><li class="chapter-item "><a href="../../api/aio_provider/nng_aio_get_input.html"><strong aria-hidden="true">5.5.4.</strong> nng_aio_get_input</a></li><li class="chapter-item "><a href="../../api/aio_provider/nng_aio_set_output.html"><strong aria-hidden="true">5.5.5.</strong> nng_aio_set_output</a></li></ol></li><li class="chapter-item "><a href="../../api/util/index.html"><strong aria-hidden="true">5.6.</strong> Utility Functions</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/util/nng_alloc.html"><strong aria-hidden="true">5.6.1.</strong> nng_alloc</a></li><li class="chapter-item "><a href="../../api/util/nng_clock.html"><strong aria-hidden="true">5.6.2.</strong> nng_clock</a></li><li class="chapter-item "><a href="../../api/util/nng_free.html"><strong aria-hidden="true">5.6.3.</strong> nng_free</a></li><li class="chapter-item "><a href="../../api/util/nng_msleep.html"><strong aria-hidden="true">5.6.4.</strong> nng_msleep</a></li><li class="chapter-item "><a href="../../api/util/nng_random.html"><strong aria-hidden="true">5.6.5.</strong> nng_random</a></li><li class="chapter-item "><a href="../../api/util/nng_sleep_aio.html"><strong aria-hidden="true">5.6.6.</strong> nng_sleep_aio</a></li><li class="chapter-item "><a href="../../api/util/nng_strdup.html"><strong aria-hidden="true">5.6.7.</strong> nng_strdup</a></li><li class="chapter-item "><a href="../../api/util/nng_strerror.html"><strong aria-hidden="true">5.6.8.</strong> nng_strerror</a></li><li class="chapter-item "><a href="../../api/util/nng_strfree.html"><strong aria-hidden="true">5.6.9.</strong> nng_strfree</a></li><li class="chapter-item "><a href="../../api/util/nng_version.html"><strong aria-hidden="true">5.6.10.</strong> nng_version</a></li></ol></li><li class="chapter-item "><a href="../../api/threads/index.html"><strong aria-hidden="true">5.7.</strong> Threads and Synchronization</a><a class="toggle"><div>❱</div></a></li><li><ol class="section"><li class="chapter-item "><a href="../../api/threads/nng_cv_alloc.html"><strong aria-hidden="true">5.7.1.</strong> nng_cv_alloc</a></li><li class="chapter-item "><a href="../../api/threads/nng_cv_free.html"><strong aria-hidden="true">5.7.2.</strong> nng_cv_free</a></li><li class="chapter-item "><a href="../../api/threads/nng_cv_until.html"><strong aria-hidden="true">5.7.3.</strong> nng_cv_until</a></li><li class="chapter-item "><a href="../../api/threads/nng_cv_wait.html"><strong aria-hidden="true">5.7.4.</strong> nng_cv_wait</a></li><li class="chapter-item "><a href="../../api/threads/nng_cv_wake.html"><strong aria-hidden="true">5.7.5.</strong> nng_cv_wake</a></li><li class="chapter-item "><a href="../../api/threads/nng_cv_wake1.html"><strong aria-hidden="true">5.7.6.</strong> nng_cv_wake1</a></li><li class="chapter-item "><a href="../../api/threads/nng_mtx_alloc.html"><strong aria-hidden="true">5.7.7.</strong> nng_mtx_alloc</a></li><li class="chapter-item "><a href="../../api/threads/nng_mtx_free.html"><strong aria-hidden="true">5.7.8.</strong> nng_mtx_free</a></li><li class="chapter-item "><a href="../../api/threads/nng_mtx_lock.html"><strong aria-hidden="true">5.7.9.</strong> nng_mtx_lock</a></li><li class="chapter-item "><a href="../../api/threads/nng_mtx_unlock.html"><strong aria-hidden="true">5.7.10.</strong> nng_mtx_unlock</a></li></ol></li><li class="chapter-item "><a href="../../api/compat/index.html"><strong aria-hidden="true">5.8.</strong> Legacy Compatibility</a></li></ol></li><li class="chapter-item expanded "><a href="../../indexing.html"><strong aria-hidden="true">6.</strong> Index</a></li></ol> </div> <div id="sidebar-resize-handle" class="sidebar-resize-handle"> <div class="sidebar-resize-indicator"></div> @@ -240,17 +240,82 @@ } </style> -<h1 id="aio"><a class="header" href="#aio">aio</a></h1> +<h1 id="aysnchronous-io"><a class="header" href="#aysnchronous-io">Aysnchronous I/O</a></h1> +<p><em>NNG</em> provides rich support for <a name="a001"></a>asynchronous I/O. +This allows applications to achieve high levels of concurrency with a +minimum of fuss, optimized for the platform.</p> +<p>Asynchronous I/O is performed without blocking calling application +threads, so they may continue to perform other work.</p> +<h2 id="aio-handles"><a class="header" href="#aio-handles">AIO Handles</a></h2> +<p>Applications create an <code>nng_aio</code> object with a function to call when +the operation is done (along with a pointer to application private data), +then submit the operation.</p> +<p>These <code>nng_aio</code> objects are created using the <a href="nng_aio_alloc.html"><code>nng_aio_alloc()</code></a>, +and destroyed using <a href="nng_aio_free.html"><code>nng_aio_free()</code></a>.</p> +<p>The <code>nng_aio</code> object itself is declared like this:</p> +<pre><code class="language-c">#include <nng/nng.h> + +typedef struct nng_aio nng_aio; +</code></pre> +<p>Every asynchronous operation uses its own instance an <code>nng_aio</code>, and each +<code>nng_aio</code> can only be used with a single operation at a time.</p> +<div class="mdbook-alerts mdbook-alerts-important"> +<p class="mdbook-alerts-title"> + <span class="mdbook-alerts-icon"></span> + important +</p> +<p>Attempting to submit an operation using an <code>nng_aio</code> that is already +in use for another operation will crash the application. +However, it is possible to submit another operation on the <code>nng_aio</code> from +the callback associated with the same <code>nng_aio</code>.</p> +</div> +<p>When the operation is complete, whether successfully +or otherwise, the callback function is executed. +The callback will be executed exactly once.</p> +<h2 id="cancellation"><a class="header" href="#cancellation">Cancellation</a></h2> +<p>The asynchronous I/O framework also supports cancellation of +operations that are already in progress +(see <a href="nng_aio_cancel.html"><code>nng_aio_cancel()</code></a>), as well setting a maximum +timeout for them to complete within +(see <a href="nng_aio_set_timeout.html"><code>nng_aio_set_timeout()</code></a>).</p> +<h2 id="waiting-for-completion"><a class="header" href="#waiting-for-completion">Waiting for Completion</a></h2> +<p>It is also possible to initiate an asynchronous operation, and wait for it to +complete <a href="nng_aio_wait.html"><code>nng_aio_wait()</code></a>.</p> +<div class="mdbook-alerts mdbook-alerts-important"> +<p class="mdbook-alerts-title"> + <span class="mdbook-alerts-icon"></span> + important +</p> +<p>Applications must never call <a href="nng_aio_wait.html"><code>nng_aio_wait()</code></a> or +<a href="nng_aio_stop.html"><code>nng_aio_stop()</code></a> from a callback registered to +an <code>nng_aio</code> object. Doing so can lead to a deadlock.</p> +</div> +<h2 id="see-also"><a class="header" href="#see-also">See Also</a></h2> +<p><a href="nng_aio_abort.html">nng_aio_abort</a>, +<a href="nng_aio_alloc.html">nng_aio_alloc</a>, +<a href="nng_aio_cancel.html">nng_aio_cancel</a>, +<a href="nng_aio_count.html">nng_aio_count</a>, +<a href="nng_aio_free.html">nng_aio_free</a>, +<a href="nng_aio_get_input.html">nng_aio_get_input</a>, +<a href="nng_aio_get_msg.html">nng_aio_get_msg</a>, +<a href="nng_aio_get_output.html">nng_aio_get_output</a>, +<a href="nng_aio_result.html">nng_aio_result</a>, +<a href="nng_aio_set_input.html">nng_aio_set_input</a>, +<a href="nng_aio_set_iov.html">nng_aio_set_iov</a>, +<a href="nng_aio_set_msg.html">nng_aio_set_msg</a>, +<a href="nng_aio_set_timeout.html">nng_aio_set_timeout</a>, +<a href="nng_aio_stop.html">nng_aio_stop</a>, +<a href="nng_aio_wait.html">nng_aio_wait</a></p> </main> <nav class="nav-wrapper" aria-label="Page navigation"> <!-- Mobile navigation buttons --> - <a rel="prev" href="../../api/index.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left"> + <a rel="prev" href="../../api/context/nng_ctx_setopt.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left"> <i class="fa fa-angle-left"></i> </a> - <a rel="next prefetch" href="../../api/nng_aio.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> + <a rel="next prefetch" href="../../api/aio/nng_aio_abort.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> <i class="fa fa-angle-right"></i> </a> @@ -260,11 +325,11 @@ </div> <nav class="nav-wide-wrapper" aria-label="Page navigation"> - <a rel="prev" href="../../api/index.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left"> + <a rel="prev" href="../../api/context/nng_ctx_setopt.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left"> <i class="fa fa-angle-left"></i> </a> - <a rel="next prefetch" href="../../api/nng_aio.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> + <a rel="next prefetch" href="../../api/aio/nng_aio_abort.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right"> <i class="fa fa-angle-right"></i> </a> </nav> |
