From 1bcf60a65ee56054e638c0859da1fe2418160bc6 Mon Sep 17 00:00:00 2001
From: Garrett D'Amore <garrett@damore.org>
Date: Sun, 31 Mar 2024 10:58:17 -0700
Subject: nng_recv* added

---
 docs/reference/src/sock/nng_send.3.adoc | 90 +++++++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)
 create mode 100644 docs/reference/src/sock/nng_send.3.adoc

(limited to 'docs/reference/src/sock/nng_send.3.adoc')

diff --git a/docs/reference/src/sock/nng_send.3.adoc b/docs/reference/src/sock/nng_send.3.adoc
new file mode 100644
index 00000000..4932712a
--- /dev/null
+++ b/docs/reference/src/sock/nng_send.3.adoc
@@ -0,0 +1,90 @@
+# nng_send
+
+## NAME
+
+nng_send --- send data
+
+## SYNOPSIS
+
+```
+#include <nng/nng.h>
+
+int nng_send(nng_socket s, void *data, size_t size, int flags);
+```
+
+## DESCRIPTION
+
+The `nng_send()` function sends a message containing the _data_ of
+length _size_ using the xref:nng_socket.5.adoc[socket] _s_.
+
+NOTE: The semantics of what sending a message means vary from protocol to
+protocol, so examination of the protocol documentation is encouraged.
+(For example, with an xref:nng_pub.7.adoc[_pub_] socket the data is broadcast, so that
+any peers who have a suitable subscription will be able to receive it using
+xref:nng_recv.3.adoc[`nng_recv()`] or a similar function.)
+Furthermore, some protocols may not support sending data (such as
+xref:nng_sub.7.adoc[_sub_]) or may require other conditions.
+(For example, xref:nng_rep.7.adoc[_rep_] sockets cannot normally send data,
+which are responses to requests, until they have first received a request.)
+
+The _flags_ may contain either of (or neither of) the following values:
+
+`NNG_FLAG_NONBLOCK`::
+    The function returns immediately, regardless of whether
+    the socket is able to accept the data or not.  If the socket is unable
+    to accept the data (such as if backpressure exists because the peers
+    are consuming messages too slowly, or no peer is present), then the
+    function will return with `NNG_EAGAIN`.  If this flag is not specified,
+    then the function will block if such a condition exists.
+
+`NNG_FLAG_ALLOC`::
+    The _data_ was allocated using xref:nng_alloc.3.adoc[`nng_alloc()`], or was
+    obtained from a call to xref:nng_recv.3.adoc[`nng_recv()`] with
+    the `NNG_FLAG_ALLOC` flag.
+    If this function returns success, then the _data_ is "owned" by the
+    function, and it will assume responsibility for calling
+    xref:nng_free.3.adoc[`nng_free()`] when it is no longer needed.
+    In the absence of this flag, the _data_ is copied by the implementation
+    before the function returns to the caller.
+
+TIP: The `NNG_FLAG_ALLOC` flag can be used to reduce data copies, thereby
+increasing performance.
+
+NOTE: Regardless of the presence or absence of `NNG_FLAG_NONBLOCK`, there may
+be queues between the sender and the receiver.
+Furthermore, there is no guarantee that the message has actually been delivered.
+Finally, with some protocols, the semantic is implicitly `NNG_FLAG_NONBLOCK`,
+such as with xref:nng_pub.7.adoc[_pub_] sockets, which are best-effort delivery only.
+
+IMPORTANT: When using `NNG_FLAG_ALLOC`, it is important that the value of _size_
+match the actual allocated size of the data.
+Using an incorrect size results
+in unspecified behavior, which may include heap corruption, program crashes,
+or trans-dimensional mutation of the program's author.
+
+## RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+## ERRORS
+
+* `NNG_EAGAIN`: The operation would block, but `NNG_FLAG_NONBLOCK` was specified.
+* `NNG_ECLOSED`: The socket _s_ is not open.
+* `NNG_EINVAL`: An invalid set of _flags_ was specified.
+* `NNG_EMSGSIZE`: The value of _size_ is too large.
+* `NNG_ENOMEM`: Insufficient memory is available.
+* `NNG_ENOTSUP`: The protocol for socket _s_ does not support sending.
+* `NNG_ESTATE`: The socket _s_ cannot send data in this state.
+* `NNG_ETIMEDOUT`: The operation timed out.
+
+## SEE ALSO
+
+[nng_alloc][nng_alloc],
+[nng_free][nng_free],
+[nng_recv][nng_recv],
+[nng_sendmsg][nng_sendmsg],
+[nng_strerror][nng_strerror],
+[nng_socket][nng_socket],
+[nng][nng]
+
+{{#include ../refs.md}}
-- 
cgit v1.2.3-70-g09d2

