summaryrefslogtreecommitdiff
path: root/man/v1.7.3/libnng.3.html
diff options
context:
space:
mode:
authorStaysail Systems, Inc <info@staysail.tech>2024-03-01 07:04:14 -0800
committerGarrett D'Amore <garrett@damore.org>2024-03-01 07:07:37 -0800
commite4e646a6a9982ff932d83633157106a0b34975a2 (patch)
tree9ee71c33531a9592ba0c66ad97ceb10c42168519 /man/v1.7.3/libnng.3.html
parent66e28ffa9fe663908539550bf104716c5b4dc213 (diff)
downloadnng-e4e646a6a9982ff932d83633157106a0b34975a2.tar.gz
nng-e4e646a6a9982ff932d83633157106a0b34975a2.tar.bz2
nng-e4e646a6a9982ff932d83633157106a0b34975a2.zip
Manual page updates for v1.7.3
Diffstat (limited to 'man/v1.7.3/libnng.3.html')
-rw-r--r--man/v1.7.3/libnng.3.html1406
1 files changed, 1406 insertions, 0 deletions
diff --git a/man/v1.7.3/libnng.3.html b/man/v1.7.3/libnng.3.html
new file mode 100644
index 00000000..93576eba
--- /dev/null
+++ b/man/v1.7.3/libnng.3.html
@@ -0,0 +1,1406 @@
+---
+version: v1.7.3
+layout: manpage_v2
+title: libnng(3)
+---
+<h1>libnng(3)</h1>
+<div class="sect1">
+<h2 id="_name">NAME</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>libnng - nanomsg next generation library</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_synopsis">SYNOPSIS</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p><strong>cc</strong> [<em>flags</em>] <em>files</em> <strong>-lnng</strong> [<em>libraries</em>]</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_description">DESCRIPTION</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p><a href="nng.7.html"><em>NNG</em></a> provides a common messaging framework
+intended to solve common communication problems in distributed applications.</p>
+</div>
+<div class="paragraph">
+<p>It provides a C language API.</p>
+</div>
+<div class="sect2">
+<h3 id="_common_functions">Common Functions</h3>
+<div class="paragraph">
+<p>The following common functions exist in <em>libnng</em>.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_alloc.3.html">nng_alloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate memory</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_free.3.html">nng_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free memory</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_strdup.3.html">nng_strdup()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">duplicate string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_strerror.3.html">nng_strerror()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return an error description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_strfree.3.html">nng_strfree()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_version.3.html">nng_version()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">report library version</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_socket_functions">Socket Functions</h3>
+<div class="paragraph">
+<p>The following functions operate on sockets.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_close.3.html">nng_close()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">close socket</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_dial.3.html">nng_dial()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">create and start dialer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_getopt.3.html">nng_getopt()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get socket option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_listen.3.html">nng_listen()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">create and start listener</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_recv.3.html">nng_recv()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">receive data</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_send.3.html">nng_send()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">send data</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_setopt.3.html">nng_setopt()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set socket option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_socket_get.3.html">nng_socket_get()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get socket option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_socket_id.3.html">nng_socket_id()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get numeric socket identifier</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_socket_set.3.html">nng_socket_set()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set socket option</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_connection_management">Connection Management</h3>
+<div class="paragraph">
+<p>The following functions are used with either listeners, or dialers.
+Listeners accept incoming connection requests, and dialers make them.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_dial.3.html">nng_dial()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">create and start dialer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_dialer_close.3.html">nng_dialer_close()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">close dialer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_dialer_create.3.html">nng_dialer_create()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">create dialer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_dialer_get.3.html">nng_dialer_get()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get dialer option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_dialer_getopt.3.html">nng_dialer_getopt()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get dialer option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_dialer_id.3.html">nng_dialer_id()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get numeric dialer identifier</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_dialer_set.3.html">nng_dialer_set()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set dialer option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_dialer_setopt.3.html">nng_dialer_setopt()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set dialer option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_dialer_start.3.html">nng_dialer_start()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">start dialer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_listen.3.html">nng_listen()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">create and start listener</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_listener_close.3.html">nng_listener_close()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">close listener</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_listener_create.3.html">nng_listener_create()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">create listener</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_listener_get.3.html">nng_listener_get()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get listener option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_listener_getopt.3.html">nng_listener_getopt()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get listener option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_listener_id.3.html">nng_listener_id()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get numeric listener identifier</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_listener_set.3.html">nng_listener_set()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set listener option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_listener_setopt.3.html">nng_listener_setopt()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set listener option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_listener_start.3.html">nng_listener_start()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">start listener</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_pipe_close.3.html">nng_pipe_close()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">close pipe</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_pipe_dialer.3.html">nng_pipe_dialer()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return dialer that created pipe</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_pipe_get.3.html">nng_pipe_get()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get pipe option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_pipe_getopt.3.html">nng_pipe_getopt()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get pipe option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_pipe_id.3.html">nng_pipe_id()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get numeric pipe identifier</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_pipe_listener.3.html">nng_pipe_listener()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return listener that created pipe</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_pipe_notify.3.html">nng_pipe_notify()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">register pipe notification callback</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_pipe_socket.3.html">nng_pipe_socket()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return owning socket for pipe</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_message_handling_functions">Message Handling Functions</h3>
+<div class="paragraph">
+<p>Applications desiring to use the richest part of <em>libnng</em> will want to
+use the message API, where a message structure is passed between functions.
+This API provides the most power support for zero-copy.</p>
+</div>
+<div class="paragraph">
+<p>Messages are divided into a header and body, where the body generally carries
+user-payload and the header carries protocol specific header information.
+Most applications will only interact with the body.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_alloc.3.html">nng_msg_alloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate a message</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_append.3.html">nng_msg_append()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">append to message body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_body.3.html">nng_msg_body()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return message body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_capacity.3.html">nng_msg_capacity()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return capacity allocated for message body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_chop.3.html">nng_msg_chop()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">remove data from end of message body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_clear.3.html">nng_msg_clear()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">clear message body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_dup.3.html">nng_msg_dup()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">duplicate a message</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_free.3.html">nng_msg_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free a message</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_get_pipe.3.html">nng_msg_get_pipe()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get pipe for message</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_insert.3.html">nng_msg_insert()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">prepend to message body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_len.3.html">nng_msg_len()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return the message body length</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_realloc.3.html">nng_msg_realloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">reallocate a message</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_reserve.3.html">nng_msg_reserve()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">reserve storage for message body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_set_pipe.3.html">nng_msg_set_pipe()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set pipe for message</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_trim.3.html">nng_msg_trim()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">remove data from start of message body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_recvmsg.3.html">nng_recvmsg()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">receive a message</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_sendmsg.3.html">nng_sendmsg()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">send a message</p></td>
+</tr>
+</tbody>
+</table>
+<div class="sect3">
+<h4 id="_message_header_handling">Message Header Handling</h4>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+Few applications will need these functions, as message headers are only
+used to carry protocol-specific content. However, applications which use raw
+mode may need to access the header of messages.
+</td>
+</tr>
+</table>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_header.3.html">nng_msg_header()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return message header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_header_append.3.html">nng_msg_header_append()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">append to message header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_header_chop.3.html">nng_msg_header_chop()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">remove data from end of message header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_header_clear.3.html">nng_msg_header_clear()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">clear message header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_header_insert.3.html">nng_msg_header_insert()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">prepend to message header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_header_len.3.html">nng_msg_header_len()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return the message header length</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msg_header_trim.3.html">nng_msg_header_trim()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">remove data from start of message header</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_asynchronous_operations">Asynchronous Operations</h3>
+<div class="paragraph">
+<p>Most applications will interact with <em>NNG</em> synchronously; that is that
+functions such as <a href="nng_send.3.html"><code>nng_send()</code></a> will block the calling
+thread until the operation has completed.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+Synchronous operations which send messages may return before the
+message has actually been received, or even transmitted. Instead, These
+functions return as soon as the message was successfully queued for
+delivery.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Asynchronous operations behave differently. These operations are
+initiated by the calling thread, but control returns immediately to
+the calling thread. When the operation is subsequently completed (regardless
+of whether this was successful or not), then a user supplied function
+is executed.</p>
+</div>
+<div class="paragraph">
+<p>A context structure, an <a href="nng_aio.5.html"><code>nng_aio</code></a>, is allocated and
+associated with each asynchronous operation.
+Only a single asynchronous operation may be associated with an
+<code>nng_aio</code> at any time.</p>
+</div>
+<div class="paragraph">
+<p>The following functions are used in the asynchronous model:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_abort.3.html">nng_aio_abort()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">abort asynchronous I/O operation</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_alloc.3.html">nng_aio_alloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate asynchronous I/O handle</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_begin.3.html">nng_aio_begin()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">begin asynchronous I/O operation</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_busy.3.html">nng_aio_busy()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">test if asynchronous I/O is busy</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_cancel.3.html">nng_aio_cancel()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">cancel asynchronous I/O operation</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_count.3.html">nng_aio_count()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return number of bytes transferred</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_defer.3.html">nng_aio_defer()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">defer asynchronous I/O operation</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_finish.3.html">nng_aio_finish()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">finish asynchronous I/O operation</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_free.3.html">nng_aio_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free asynchronous I/O handle</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_get_input.3.html">nng_aio_get_input()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return input parameter</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_get_msg.3.html">nng_aio_get_msg()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get message from an asynchronous receive</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_get_output.3.html">nng_aio_get_output()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return output result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_free.3.html">nng_aio_reap()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">reap asynchronous I/O handle</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_result.3.html">nng_aio_result()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return result of asynchronous operation</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_set_input.3.html">nng_aio_set_input()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set input parameter</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_set_iov.3.html">nng_aio_set_iov()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set scatter/gather vector</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_set_msg.3.html">nng_aio_set_msg()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set message for an asynchronous send</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_set_output.3.html">nng_aio_set_output()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set output result</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_set_timeout.3.html">nng_aio_set_timeout()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set asynchronous I/O timeout</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_stop.3.html">nng_aio_stop()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">stop asynchronous I/O operation</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_aio_wait.3.html">nng_aio_wait()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">wait for asynchronous I/O operation</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_recv_aio.3.html">nng_recv_aio()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">receive message asynchronously</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_send_aio.3.html">nng_send_aio()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">send message asynchronously</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_sleep_aio.3.html">nng_sleep_aio()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sleep asynchronously</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_protocols">Protocols</h3>
+<div class="paragraph">
+<p>The following functions are used to construct a socket with a specific protocol:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_bus_open.3.html">nng_bus_open()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">open a bus socket</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_pair_open.3.html">nng_pair_open()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">open a pair socket</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_pub_open.3.html">nng_pub_open()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">open a pub socket</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_pull_open.3.html">nng_pull_open()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">open a pull socket</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_push_open.3.html">nng_push_open()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">open a push socket</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_rep_open.3.html">nng_rep_open()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">open a rep socket</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_req_open.3.html">nng_req_open()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">open a req socket</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_respondent_open.3.html">nng_respondent_open()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">open a respondent socket</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_sub_open.3.html">nng_sub_open()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">open a sub socket</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_surveyor_open.3.html">nng_surveyor_open()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">open a surveyor socket</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_transports">Transports</h3>
+<div class="paragraph">
+<p>The following functions are used to register a transport for use.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_inproc_register.3.html">nng_inproc_register()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">register inproc transport</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ipc_register.3.html">nng_ipc_register()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">register IPC transport</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_tcp_register.3.html">nng_tcp_register()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">register TCP transport</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_tls_register.3.html">nng_tls_register()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">register TLS transport</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ws_register.3.html">nng_ws_register()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">register WebSocket transport</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_wss_register.3.html">nng_wss_register()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">register WebSocket Secure transport</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_zt_register.3.html">nng_zt_register()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">register ZeroTier transport</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_protocol_contexts">Protocol Contexts</h3>
+<div class="paragraph">
+<p>The following functions are useful to separate the protocol processing
+from a socket object, into a separate context.
+This can allow multiple contexts to be created on a single socket for
+concurrent applications.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ctx_close.3.html">nng_ctx_close()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">close context</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ctx_get.3.html">nng_ctx_get()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get context option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ctx_getopt.3.html">nng_ctx_getopt()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get context option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ctx_id.3.html">nng_ctx_id()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get numeric context identifier</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ctx_open.3.html">nng_ctx_open()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">create context</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ctx_recv.3.html">nng_ctx_recv()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">receive message using context asynchronously</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ctx_recvmsg.3.html">nng_ctx_recvmsg()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">receive a message using context</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ctx_send.3.html">nng_ctx_send()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">send message using context asynchronously</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ctx_sendmsg.3.html">nng_ctx_sendmsg()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">send a message using context</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ctx_set.3.html">nng_ctx_set()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set context option</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_ctx_setopt.3.html">nng_ctx_setopt()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set context option</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_devices_relays">Devices, Relays</h3>
+<div class="paragraph">
+<p>The following function family is used to create forwarders or relayers
+that route messages from one socket to another.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_device.3.html">nng_device()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">message forwarding device</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_statistics">Statistics</h3>
+<div class="paragraph">
+<p>The following functions provide access to statistics which can be used
+to observe program behaviors and as an aid in troubleshooting.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_bool.3.html">nng_stat_bool()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get statistic Boolean value</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_child.3.html">nng_stat_child()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get child statistic</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_desc.3.html">nng_stat_name()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get statistic description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_find.3.html">nng_stat_find()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">find statistic by name</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_find_dialer.3.html">nng_stat_find_dialer()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">find dialer statistics</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_find_listener.3.html">nng_stat_find_listener()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">find listener statistics</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_find_socket.3.html">nng_stat_find_socket()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">find socket statistics</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_name.3.html">nng_stat_name()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get statistic name</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_next.3.html">nng_stat_next()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get next statistic</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_string.3.html">nng_stat_string()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get statistic string value</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_timestamp.3.html">nng_stat_timestamp()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get statistic timestamp</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_type.3.html">nng_stat_type()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get statistic type</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_unit.3.html">nng_stat_unit()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get statistic unit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stat_value.3.html">nng_stat_value()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get statistic numeric value</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stats_free.3.html">nng_stats_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free statistics</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stats_get.3.html">nng_stats_get()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get statistics</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_url_object">URL Object</h3>
+<div class="paragraph">
+<p>Common functionality is supplied for parsing and handling
+universal resource locators (URLS).</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_url_clone.3.html">nng_url_clone()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">clone URL structure</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_url_free.3.html">nng_url_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free URL structure</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_url_parse.3.html">nng_url_parse()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">create URL structure from string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_supplemental_api">Supplemental API</h3>
+<div class="paragraph">
+<p>These supplemental functions are not intrinsic to building
+network applications with <em>NNG</em>, but they are made available
+as a convenience to aid in creating portable applications.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_clock.3supp.html">nng_clock()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get time</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_cv_alloc.3supp.html">nng_cv_alloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate condition variable</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_cv_free.3supp.html">nng_cv_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free condition variable</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_cv_until.3supp.html">nng_cv_until()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">wait for condition or timeout</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_cv_wait.3supp.html">nng_cv_wait()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">wait for condition</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_cv_wake.3supp.html">nng_cv_wake()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">wake all waiters</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_cv_wake1.3supp.html">nng_cv_wake1()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">wake one waiter</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_id_map.3supp.html">nng_id_map</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">identifier based mapping table</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_msleep.3supp.html">nng_msleep()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sleep for milliseconds</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_mtx_alloc.3supp.html">nng_mtx_alloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate mutex</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_mtx_free.3supp.html">nng_mtx_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free mutex</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_mtx_lock.3supp.html">nng_mtx_lock()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">lock mutex</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_mtx_unlock.3supp.html">nng_mtx_unlock()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">unlock mutex</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_opts_parse.3supp.html">nng_opts_parse()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">parse command line options</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_random.3supp.html">nng_random()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get random number</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_socket_pair.3supp.html">nng_socket_pair()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">create connected pair of BSD sockets</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_thread_create.3supp.html">nng_thread_create()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">create thread</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_thread_destroy.3supp.html">nng_thread_destroy()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">reap thread</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_thread_set_name.3supp.html">nng_thread_set_name()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set thread name</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_byte_streams">Byte Streams</h3>
+<div class="paragraph">
+<p>These functions are available for use with byte streams.
+They are considered low-level, for uses where the higher level functions
+using Scalability Protocols are inappropriate.</p>
+</div>
+<div class="paragraph">
+<p>Byte streams, represented by
+<a href="nng_stream.5.html"><code>nng_stream</code></a> objects, correspond to underlying
+connections such as TCP connections or named pipes.
+They are created by either
+<a href="nng_stream_dialer.5.html"><code>nng_stream_dialer</code></a> or
+<a href="nng_stream_listener.5.html"><code>nng_stream_listener</code></a> objects.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_close.3str.html">nng_stream_close()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">close byte stream</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_dialer_alloc.3str.html">nng_stream_dialer_alloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate byte stream dialer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_dialer_close.3str.html">nng_stream_dialer_close()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">close byte stream dialer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_dialer_dial.3str.html">nng_stream_dialer_dial()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">initiate outgoing byte stream</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_dialer_free.3str.html">nng_stream_dialer_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free byte stream dialer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_dialer_get.3str.html">nng_stream_dialer_get()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get option from byte stream dialer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_dialer_set.3str.html">nng_stream_dialer_set()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set option on byte stream dialer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_free.3str.html">nng_stream_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free byte stream</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_get.3str.html">nng_stream_get()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get option from byte stream</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_listener_accept.3str.html">nng_stream_listener_accept()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accept incoming byte stream</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_listener_alloc.3str.html">nng_stream_listener_alloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate byte stream listener</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_listener_close.3str.html">nng_stream_listener_close()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">close byte stream listener</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_listener_free.3str.html">nng_stream_listener_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free byte stream listener</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_listener_get.3str.html">nng_stream_listener_get()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get option from byte stream listener</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_listener_listen.3str.html">nng_stream_listener_listen()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">bind byte stream listener to address</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_listener_set.3str.html">nng_stream_listener_set()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set option on byte stream listener</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_recv.3str.html">nng_stream_recv()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">receive from byte stream</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_send.3str.html">nng_stream_send()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">send to byte stream</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_stream_set.3str.html">nng_stream_set()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set option on byte stream</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_http_support">HTTP Support</h3>
+<div class="paragraph">
+<p>The library may be configured with support for HTTP, and this will
+be the case if WebSocket support is configured as well.
+In this case, it is possible to access functionality to support the creation of
+HTTP (and HTTP/S if TLS support is present) servers and clients.</p>
+</div>
+<div class="sect3">
+<h4 id="_common_http_functions">Common HTTP Functions</h4>
+<div class="paragraph">
+<p>The following functions are used to work with HTTP requests, responses,
+and connections.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_conn_close.3http.html">nng_http_conn_close()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">close HTTP connection</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_conn_read.3http.html">nng_http_conn_read()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">read from HTTP connection</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_conn_read_all.3http.html">nng_http_conn_read_all()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">read all from HTTP connection</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_conn_read_req.3http.html">nng_http_conn_read_req()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">read HTTP request</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_conn_read_res.3http.html">nng_http_conn_read_res()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">read HTTP response</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_conn_write.3http.html">nng_http_conn_write()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">write to HTTP connection</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_conn_write_all.3http.html">nng_http_conn_write_all()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">write all to HTTP connection</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_conn_write_req.3http.html">nng_http_conn_write_req()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">write HTTP request</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_conn_write_res.3http.html">nng_http_conn_write_res()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">write HTTP response</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_add_header.3http.html">nng_http_req_add_header()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">add HTTP request header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_alloc.3http.html">nng_http_req_alloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate HTTP request structure</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_copy_data.3http.html">nng_http_req_copy_data()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">copy HTTP request body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_del_header.3http.html">nng_http_req_del_header()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">delete HTTP request header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_free.3http.html">nng_http_req_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free HTTP request structure</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_get_data.3http.html">nng_http_req_get_data()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get HTTP request body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_get_header.3http.html">nng_http_req_get_header()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return HTTP request header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_get_method.3http.html">nng_http_req_get_method()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return HTTP request method</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_get_uri.3http.html">nng_http_req_get_uri()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return HTTP request URI</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_get_version.3http.html">nng_http_req_get_version()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return HTTP request protocol version</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_reset.3http.html">nng_http_req_reset()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">reset HTTP request structure</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_set_data.3http.html">nng_http_req_set_data()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP request body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_set_header.3http.html">nng_http_req_set_header()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP request header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_set_method.3http.html">nng_http_req_set_method()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP request method</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_set_uri.3http.html">nng_http_req_set_uri()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP request URI</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_req_set_version.3http.html">nng_http_req_set_version()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP request protocol version</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_add_header.3http.html">nng_http_res_add_header()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">add HTTP response header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_alloc.3http.html">nng_http_res_alloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate HTTP response structure</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_alloc_error.3http.html">nng_http_res_alloc_error()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate HTTP error response</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_copy_data.3http.html">nng_http_res_copy_data()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">copy HTTP response body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_del_header.3http.html">nng_http_res_del_header()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">delete HTTP response header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_free.3http.html">nng_http_res_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free HTTP response structure</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_get_data.3http.html">nng_http_res_get_data()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get HTTP response body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_get_header.3http.html">nng_http_res_get_header()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return HTTP response header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_get_reason.3http.html">nng_http_res_get_reason()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return HTTP response reason</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_get_status.3http.html">nng_http_res_get_status()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return HTTP response status</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_get_version.3http.html">nng_http_res_get_version()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return HTTP response protocol version</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_reset.3http.html">nng_http_res_reset()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">reset HTTP response structure</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_set_data.3http.html">nng_http_res_set_data()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP response body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_set_header.3http.html">nng_http_res_set_header()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP response header</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_set_reason.3http.html">nng_http_res_set_reason()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP response reason</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_set_status.3http.html">nng_http_res_set_status()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP response status</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_res_set_version.3http.html">nng_http_res_set_version()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP response protocol version</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect3">
+<h4 id="_http_client_functions">HTTP Client Functions</h4>
+<div class="paragraph">
+<p>These functions are intended for use with HTTP client applications.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_client_alloc.3http.html">nng_http_client_alloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate HTTP client</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_client_connect.3http.html">nng_http_client_connect()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">establish HTTP client connection</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_client_free.3http.html">nng_http_client_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free HTTP client</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_client_get_tls.3http.html">nng_http_client_get_tls()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get HTTP client TLS configuration</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_client_set_tls.3http.html">nng_http_client_set_tls()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP client TLS configuration</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_client_transact.3http.html">nng_http_client_transact()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">perform one HTTP transaction</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_conn_transact.3http.html">nng_http_conn_transact()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">perform one HTTP transaction on connection</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect3">
+<h4 id="_http_server_functions">HTTP Server Functions</h4>
+<div class="paragraph">
+<p>These functions are intended for use with HTTP server applications.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_handler_alloc.3http.html">nng_http_handler_alloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate HTTP server handler</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_handler_collect_body.3http.html">nng_http_handler_collect_body()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP handler to collect request body</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_handler_free.3http.html">nng_http_handler_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free HTTP server handler</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_handler_get_data.3http.html">nng_http_handler_get_data()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">return extra data for HTTP handler</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_handler_set_data.3http.html">nng_http_handler_set_data()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set extra data for HTTP handler</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_handler_set_host.3http.html">nng_http_handler_set_host()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set host for HTTP handler</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_handler_set_method.3http.html">nng_http_handler_set_method()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP handler method</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_handler_set_tree.3http.html">nng_http_handler_set_tree()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP handler to match trees</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_hijack.3http.html">nng_http_hijack()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">hijack HTTP server connection</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_server_add_handler.3http.html">nng_http_server_add_handler()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">add HTTP server handler</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_server_del_handler.3http.html">nng_http_server_del_handler()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">delete HTTP server handler</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_server_get_addr.3http.html">nng_http_server_get_addr()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get HTTP server address</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_server_get_tls.3http.html">nng_http_server_get_tls()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get HTTP server TLS configuration</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_server_hold.3http.html">nng_http_server_hold()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">get and hold HTTP server instance</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_server_release.3http.html">nng_http_server_release()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">release HTTP server instance</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_server_set_error_file.3http.html">nng_http_server_set_error_file()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set custom HTTP error file</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_server_set_error_page.3http.html">nng_http_server_set_error_page()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set custom HTTP error page</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_server_set_tls.3http.html">nng_http_server_set_tls()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set HTTP server TLS configuration</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_server_res_error.3http.html">nng_http_server_res_error()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">use HTTP server error page</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_server_start.3http.html">nng_http_server_start()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">start HTTP server</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_http_server_stop.3http.html">nng_http_server_stop()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">stop HTTP server</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_tls_configuration_objects">TLS Configuration Objects</h3>
+<div class="paragraph">
+<p>The following functions are used to manipulate transport layer security
+(TLS) configuration objects. Most of these functions will not be used even
+by TLS applications.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+These functions will only be present if the library has been built
+with TLS support.
+</td>
+</tr>
+</table>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_tls_config_alloc.3tls.html">nng_tls_config_alloc()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">allocate TLS configuration</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_tls_config_auth_mode.3tls.html">nng_tls_config_auth_mode()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set authentication mode</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_tls_config_ca_chain.3tls.html">nng_tls_config_ca_chain()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set certificate authority chain</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_tls_config_ca_file.3tls.html">nng_tls_config_ca_file()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">load certificate authority from file</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_tls_config_cert_key_file.3tls.html">nng_tls_config_cert_key_file()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">load own certificate and key from file</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_tls_config_own_cert.3tls.html">nng_tls_config_own_cert()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set own certificate and key</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_tls_config_free.3tls.html">nng_tls_config_free()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">free TLS configuration</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="nng_tls_config_server_name.3tls.html">nng_tls_config_server_name()</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">set remote server name</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_see_also">SEE ALSO</h2>
+<div class="sectionbody">
+<div class="paragraph text-left">
+<p><a href="nng_compat.3compat.html">nng_compat(3compat)</a>,
+<a href="nng.7.html">nng(7)</a></p>
+</div>
+</div>
+</div>