aboutsummaryrefslogtreecommitdiff
path: root/docs/man/libnng.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'docs/man/libnng.adoc')
-rw-r--r--docs/man/libnng.adoc313
1 files changed, 313 insertions, 0 deletions
diff --git a/docs/man/libnng.adoc b/docs/man/libnng.adoc
new file mode 100644
index 00000000..72516705
--- /dev/null
+++ b/docs/man/libnng.adoc
@@ -0,0 +1,313 @@
+= libnng(3)
+//
+// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
+// Copyright 2018 Capitar IT Group BV <info@capitar.com>
+//
+// This document is supplied under the terms of the MIT License, a
+// copy of which should be located in the distribution where this
+// file was obtained (LICENSE.txt). A copy of the license may also be
+// found online at https://opensource.org/licenses/MIT.
+//
+
+== NAME
+
+libnng - nanomsg next generation library
+
+== SYNOPSIS
+
+*cc* [_flags_] _files_ *-lnng* [_libraries_]
+
+== DESCRIPTION
+
+The <<nng#,nng(7)>> library provides a common messaging framework
+intended to solve common communication problems in distributed applications.
+
+It provides a C language API.
+
+=== Common Functions
+
+The following common functions exist in _libnng_.
+
+|===
+|<<nng_alloc#,nng_alloc(3)>>|allocate memory
+|<<nng_free#,nng_free(3)>>|free memory
+|<<nng_strerror#,nng_strerror(3)>>|return an error description
+|===
+
+=== Socket Functions
+
+The following functions operate on sockets.
+
+|===
+|<<nng_close#,nng_close(3)>>|close socket
+|<<nng_dial#,nng_dial(3)>>|create and start dialer
+|<<nng_getopt#,nng_getopt(3)>>|get socket option
+|<<nng_listen#,nng_listen(3)>>|create and start listener
+|<<nng_recv#,nng_recv(3)>>|receive data
+|<<nng_send#,nng_send(3)>>|send data
+|<<nng_setopt#,nng_setopt(3)>>|set socket option
+|===
+
+=== Connection Management
+
+The following functions are used with either listeners, or dialers.
+Listeners accept incoming connection requets, and dialers make them.
+
+|===
+|<<nng_dial#,nng_dial(3)>>|create and start dialer
+|<<nng_dialer_close#,nng_dialer_close(3)>>|close dialer
+|<<nng_dialer_create#,nng_dialer_create(3)>>|create dialer
+|<<nng_dialer_getopt#,nng_dialer_getopt(3)>>|get dialer option
+|<<nng_dialer_setopt#,nng_dialer_setopt(3)>>|set dialer option
+|<<nng_dialer_start#,nng_dialer_start(3)>>|start dialer
+|<<nng_listen#,nng_listen(3)>>|create and start listener
+|<<nng_listener_close#,nng_listener_close(3)>>|close listener
+|<<nng_listener_create#,nng_listener_create(3)>>|create listener
+|<<nng_listener_getopt#,nng_listener_getopt(3)>>|get listener option
+|<<nng_listener_setopt#,nng_listener_setopt(3)>>|set listener option
+|<<nng_listener_start#,nng_listener_start(3)>>|start listener
+|===
+
+=== Message Handling Functions
+
+Applications desiring to use the richest part of _libnng_ 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.
+
+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.
+
+|===
+|<<nng_msg_alloc#,nng_msg_alloc(3)>>|allocate a message
+|<<nng_msg_append#,nng_msg_append(3)>>|append to message body
+|<<nng_msg_body#,nng_msg_body(3)>>|return message body
+|<<nng_msg_chop#,nng_msg_chop(3)>>|remove data from end of message body
+|<<nng_msg_clear#,nng_msg_clear(3)>>|clear message body
+|<<nng_msg_dup#,nng_msg_len(3)>>|duplicate a message
+|<<nng_msg_free#,nng_msg_free(3)>>|free a message
+|<<nng_msg_insert#,nng_msg_insert(3)>>|prepend to message body
+|<<nng_msg_len#,nng_msg_len(3)>>|return the message body length
+|<<nng_msg_realloc#,nng_msg_realloc(3)>>|reallocate a message
+|<<nng_msg_trim#,nng_msg_trim(3)>>|remove data from start of message body
+|<<nng_recv_msg#,nng_recvmsg(3)>>|receive a message
+|<<nng_sendmsg#,nng_sendmsg(3)>>|send a message
+|===
+
+==== Message Header Handling
+
+TIP: 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.
+
+|===
+|<<nng_msg_header#,nng_msg_header(3)>>|return message header
+|<<nng_msg_header_append#,nng_msg_header_append(3)>>|append to message header
+|<<nng_msg_header_chop#,nng_msg_header_chop(3)>>|remove data from end of message header
+|<<nng_msg_header_clear#,nng_msg_header_clear(3)>>|clear message header
+|<<nng_msg_header_insert#,nng_msg_header_insert(3)>>|prepend to message header
+|<<nng_msg_header_len#,nng_msg_header_len(3)>>|return the message header length
+|<<nng_msg_header_trim#,nng_msg_header_trim(3)>>|remove data from start of message header
+|===
+
+=== Asynchronous Operations
+
+Most applications will interact with _nng_ synchronously; that is that
+functions such as <<nng_send#,nng_send()>> will block the calling
+thread until the operation has completed.
+
+NOTE: 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.
+
+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
+("callback") is executed.
+
+A context structure, called an _aio_, is allocated and associated for
+each asynchronous operation. Only a single asynchronous operation may
+be associated with an _aio_ at any time.
+
+The following functions are used in the asynchronous model:
+
+|===
+|<<nng_aio_abort#,nng_aio_abort(3)>>|abort asynchronous I/O operation
+|<<nng_aio_alloc#,nng_aio_alloc(3)>>|allocate asynchronous I/O handle
+|<<nng_aio_cancel#,nng_aio_cancel(3)>>|cancel asynchronous I/O operation
+|<<nng_aio_count#,nng_aio_count(3)>>|return number of bytes transferred
+|<<nng_aio_finish#,nng_aio_finish(3)>>|finish an asynchronous I/O operation
+|<<nng_aio_free#,nng_aio_free(3)>>|free asynchronous I/O handle
+|<<nng_aio_get_input#,nng_aio_get_input(3)>>|return input parameter
+|<<nng_aio_get_msg#,nng_aio_get_msg(3)>>|get message from an asynchronous receive
+|<<nng_aio_get_output#,nng_aio_get_output(3)>>|return output result
+|<<nng_aio_result#,nng_aio_result(3)>>|return result of asynchronous operation
+|<<nng_aio_set_input#,nng_aio_set_input(3)>>|set input parameter
+|<<nng_aio_set_iov#,nng_aio_set_iov(3)>>|set scatter/gather vector
+|<<nng_aio_set_msg#,nng_aio_set_msg(3)>>|set message for an asynchronous send
+|<<nng_aio_set_output#,nng_aio_set_output(3)>>|set output result
+|<<nng_aio_set_timeout#,nng_aio_set_timeout(3)>>|set asynchronous I/O timeout
+|<<nng_aio_stop#,nng_aio_stop(3)>>|stop asynchronous I/O operation
+|<<nng_aio_wait#,nng_aio_wait(3)>>|wait for asynchronous I/O operation
+|<<nng_recv_aio#,nng_recv_aio(3)>>|receive message asynchronously
+|<<nng_send_aio#,nng_send_aio(3)>>|send message asynchronously
+|===
+
+=== Protocols
+
+The following functions are used to construct a socket with a specific
+protocol:
+
+|===
+|<<nng_bus#,nng_bus_open(3)>>|open a bus socket
+|<<nng_pair#,nng_pair_open(3)>>|open a pair socket
+|<<nng_pub#,nng_pub_open(3)>>|open a pub socket
+|<<nng_pull#,nng_pull_open(3)>>|open a pull socket
+|<<nng_push#,nng_push_open(3)>>|open a push socket
+|<<nng_rep#,nng_rep_open(3)>>|open a rep socket
+|<<nng_req#,nng_req_open(3)>>|open a req socket
+|<<nng_respondent#,nng_respondent_open(3)>>|open a respondent socket
+|<<nng_sub#,nng_sub_open(3)>>|open a sub socket
+|<<nng_surveyor#,nng_surveyor_open(3)>>|open a surveyor socket
+|===
+
+=== Transports
+
+The following functions are used to register a transport for use.
+
+|===
+| <<nng_inproc#,nng_inproc_register(3)>>|register inproc transport
+| <<nng_ipc#,nng_ipc_register(3)>>|register IPC transport
+| <<nng_tcp#,nng_tcp_register(3)>>|register TCP transport
+| <<nng_tls#,nng_tls_register(3)>>|register TLS transport
+| <<nng_ws#,nng_ws_register(3)>>|register WebSocket transport
+| <<nng_wss#,nng_wss_register(3)>>|register WebSocket Secure transport
+| <<nng_zerotier#,nng_zerotier_register(3)>>|register ZeroTier transport
+|===
+
+=== URL Object
+
+Common functionality is supplied for parsing and handling
+universal resource locators (URLS).
+
+|===
+|<<nng_url_clone#,nng_url_clone(3)>>|clone URL structure
+|<<nng_url_free#,nng_url_free(3)>>|free URL structure
+|<<nng_url_parse#,nng_url_parse(3)>>|create URL structure from string
+|===
+
+
+=== HTTP Support
+
+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.
+
+==== Common HTTP Functions
+
+The following functions are used to work with HTTP requests, responses,
+and connections.
+
+|===
+|<<nng_http_conn_close#,nng_http_conn_close(3)>>|close HTTP connection
+|<<nng_http_conn_read#,nng_http_conn_read(3)>>|read from HTTP connection
+|<<nng_http_conn_read_all#,nng_http_conn_read_all(3)>>|read all from HTTP connection
+|<<nng_http_conn_read_req#,nng_http_conn_read_req(3)>>|read HTTP request
+|<<nng_http_conn_read_res#,nng_http_conn_read_req(3)>>|read HTTP response
+|<<nng_http_conn_write#,nng_http_conn_write(3)>>|write to HTTP connection
+|<<nng_http_conn_write_all#,nng_http_conn_write_all(3)>>|write all to HTTP connection
+|<<nng_http_conn_write_req#,nng_http_conn_write(3)>>|write HTTP request
+|<<nng_http_conn_write_res#,nng_http_conn_write(3)>>|write HTTP response
+|<<nng_http_req_add_header#,nng_http_req_add_header(3)>>|add HTTP request header
+|<<nng_http_req_alloc#,nng_http_req_alloc(3)>>|allocate HTTP request structure
+|<<nng_http_req_copy_data#,nng_http_req_copy_data(3)>>|copy HTTP request body
+|<<nng_http_req_del_header#,nng_http_req_del_header(3)>>|delete HTTP request header
+|<<nng_http_req_free#,nng_http_req_free(3)>>|free HTTP request structure
+|<<nng_http_req_get_header#,nng_http_req_get_header(3)>>|return HTTP request header
+|<<nng_http_req_get_method#,nng_http_req_get_method(3)>>|return HTTP request method
+|<<nng_http_req_get_uri#,nng_http_req_get_uri(3)>>|return HTTP request URI
+|<<nng_http_req_get_version#,nng_http_req_get_version(3)>>|return HTTP request protocol version
+|<<nng_http_req_set_data#,nng_http_req_set_data(3)>>|set HTTP request body
+|<<nng_http_req_set_header#,nng_http_req_set_header(3)>>|set HTTP request header
+|<<nng_http_req_set_method#,nng_http_req_set_method(3)>>|set HTTP request method
+|<<nng_http_req_set_uri#,nng_http_req_set_uri(3)>>|set HTTP request URI
+|<<nng_http_req_set_version#,nng_http_req_set_version(3)>>|set HTTP request protocol version
+|<<nng_http_res_add_header#,nng_http_res_add_header(3)>>|add HTTP response header
+|<<nng_http_res_alloc#,nng_http_res_alloc(3)>>|allocate HTTP response structure
+|<<nng_http_res_alloc_error#,nng_http_res_alloc_error(3)>>|allocate HTTP error response
+|<<nng_http_res_copy_data#,nng_http_res_copy_data(3)>>|copy HTTP response body
+|<<nng_http_res_del_header#,nng_http_res_del_header(3)>>|delete HTTP response header
+|<<nng_http_res_free#,nng_http_res_free(3)>>|free HTTP response structure
+|<<nng_http_res_set_data#,nng_http_res_set_data(3)>>|set HTTP response body
+|<<nng_http_res_get_header#,nng_http_res_get_header(3)>>|return HTTP response header
+|<<nng_http_res_get_reason#,nng_http_res_get_reason(3)>>|return HTTP response reason
+|<<nng_http_res_get_status#,nng_http_res_get_status(3)>>|return HTTP response status
+|<<nng_http_res_get_version#,nng_http_res_get_version(3)>>|return HTTP response protocol version
+|<<nng_http_res_set_header#,nng_http_res_set_header(3)>>|set HTTP response header
+|<<nng_http_res_set_reason#,nng_http_res_set_reason(3)>>|set HTTP response reason
+|<<nng_http_res_set_status#,nng_http_res_set_status(3)>>|set HTTP response status
+|<<nng_http_res_set_version#,nng_http_res_set_version(3)>>|set HTTP response protocol version
+|===
+
+==== HTTP Client Functions
+
+These functions are intended for use with HTTP client applications.
+
+|===
+| <<nng_http_client_alloc#,nng_http_client_alloc(3)>>|allocate HTTP client
+| <<nng_http_client_connect#,nng_http_client_connect(3)>>|establish HTTP client connection
+| <<nng_http_client_free#,nng_http_client_free(3)>>|free HTTP client
+| <<nng_http_client_get_tls#,nng_http_client_get_tls(3)>>|get HTTP client TLS configuration
+| <<nng_http_client_set_tls#,nng_http_client_set_tls(3)>>|set HTTP client TLS configuration
+|===
+
+==== HTTP Server Functions
+
+These functions are intended for use with HTTP server applications.
+
+|===
+|<<nng_http_handler_alloc#,nng_http_handler_alloc(3)>>|allocate HTTP server handler
+|<<nng_http_handler_free#,nng_http_handler_free(3)>>|free HTTP server handler
+|<<nng_http_handler_get_data#,nng_http_handler_get_data(3)>>|return extra data for HTTP handler
+|<<nng_http_handler_set_data#,nng_http_handler_set_data(3)>>|set extra data for HTTP handler
+|<<nng_http_handler_set_host#,nng_http_handler_set_host(3)>>|set host for HTTP handler
+|<<nng_http_handler_set_method#,nng_http_handler_set_method(3)>>|set HTTP handler method
+|<<nng_http_handler_set_tree#,nng_http_handler_set_tree(3)>>|set HTTP handler to match trees
+|<<nng_http_hijack#,nng_http_hijack(3)>>|hijack HTTP server connection
+|<<nng_http_server_add_handler#,nng_http_server_add_handler(3)>>|add HTTP server handler
+|<<nng_http_server_del_handler#,nng_http_server_del_handler(3)>>|delete HTTP server handler
+|<<nng_http_server_get_tls#,nng_http_server_get_tls(3)>>|get HTTP server TLS configuration
+|<<nng_http_server_hold#,nng_http_server_get_tls(3)>>|get and hold HTTP server instance
+|<<nng_http_server_release#,nng_http_server_get_tls(3)>>|release HTTP server instance
+|<<nng_http_server_set_tls#,nng_http_server_set_tls(3)>>|set HTTP server TLS configuration
+|<<nng_http_server_start#,nng_http_server_start(3)>>|start HTTP server
+|<<nng_http_server_stop#,nng_http_server_stop(3)>>|stop HTTP server
+|===
+
+=== TLS Configuration Objects
+
+The following functions are used to manipulate transport layer security
+(TLS) configuration objects.
+
+NOTE: These functions will only be present if the library has been built
+with TLS support.
+
+|===
+|<<nng_tls_config_auth_alloc#,nng_tls_config_alloc(3)>>|allocate TLS configuration
+|<<nng_tls_config_auth_mode#,nng_tls_config_auth_mode(3)>>|set authentication mode
+|<<nng_tls_config_ca_chain#,nng_tls_config_ca_chain(3)>>|set certificate authority chain
+|<<nng_tls_config_ca_file#,nng_tls_config_ca_file(3)>>|load certificate authority from file
+|<<nng_tls_config_cert_key_file#,nng_tls_config_cert_key_file_cert(3)>>|load own certificate and key from file
+|<<nng_tls_config_own_cert#,nng_tls_config_own_cert(3)>>|set own certificate and key
+|<<nng_tls_config_free#,nng_tls_config_free(3)>>|free TLS configuration
+|<<nng_tls_config_server_name#,nng_tls_config_server_name(3)>>|set remote server name
+|===
+
+
+== SEE ALSO
+
+<<nng#,nng(7)>>,
+<<nng_compat#,nng_compat(3)>>