diff options
| author | Garrett D'Amore <garrett@damore.org> | 2020-01-23 23:24:04 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2020-01-23 23:24:04 -0800 |
| commit | 8b8fdbdc2e3fef03e21177eb3710491e4c080d43 (patch) | |
| tree | 0336322fa94119e9e37f9d88545ba6e58307cf2a /man/v1.2.4/nn_sendmsg.3compat.html | |
| parent | b67502ab569fafc050cb9b0380d2886bc2068ece (diff) | |
| download | nng-8b8fdbdc2e3fef03e21177eb3710491e4c080d43.tar.gz nng-8b8fdbdc2e3fef03e21177eb3710491e4c080d43.tar.bz2 nng-8b8fdbdc2e3fef03e21177eb3710491e4c080d43.zip | |
Publishing updates for v1.2.4
Diffstat (limited to 'man/v1.2.4/nn_sendmsg.3compat.html')
| -rw-r--r-- | man/v1.2.4/nn_sendmsg.3compat.html | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/man/v1.2.4/nn_sendmsg.3compat.html b/man/v1.2.4/nn_sendmsg.3compat.html new file mode 100644 index 00000000..4b1b4665 --- /dev/null +++ b/man/v1.2.4/nn_sendmsg.3compat.html @@ -0,0 +1,218 @@ +--- +version: v1.2.4 +layout: refman +--- +<!DOCTYPE html> +<html lang="en"> +<head> +<meta charset="UTF-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="generator" content="Asciidoctor 2.0.10"> +<title>nn_sendmsg(3compat)</title> +<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"> +<link rel="stylesheet" href="./asciidoctor.css"> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> +</head> +<body class="manpage toc2 toc-left"> +<div id="header"> +<h1>nn_sendmsg(3compat) Manual Page</h1> +<div id="toc" class="toc2"> +<div id="toctitle">Table of Contents</div> +<ul class="sectlevel1"> +<li><a href="#_synopsis">SYNOPSIS</a></li> +<li><a href="#_description">DESCRIPTION</a></li> +<li><a href="#_return_values">RETURN VALUES</a></li> +<li><a href="#_errors">ERRORS</a></li> +<li><a href="#_see_also">SEE ALSO</a></li> +</ul> +</div> +<h2 id="_name">NAME</h2> +<div class="sectionbody"> +<p>nn_sendmsg - send message (compatible API)</p> +</div> +</div> +<div id="content"> +<div class="sect1"> +<h2 id="_synopsis">SYNOPSIS</h2> +<div class="sectionbody"> +<div class="listingblock"> +<div class="content"> +<pre class="pygments highlight"><code data-lang="c"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf"><nanomsg/nn.h></span><span class="tok-cp"></span> + +<span class="tok-kt">int</span> <span class="tok-nf">nn_sendmsg</span><span class="tok-p">(</span><span class="tok-kt">int</span> <span class="tok-n">sock</span><span class="tok-p">,</span> <span class="tok-k">const</span> <span class="tok-k">struct</span> <span class="tok-n">nn_msghdr</span> <span class="tok-o">*</span><span class="tok-n">hdr</span><span class="tok-p">,</span> <span class="tok-kt">int</span> <span class="tok-n">flags</span><span class="tok-p">);</span></code></pre> +</div> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_description">DESCRIPTION</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>The <code>nn_sendmsg()</code> function sends the message described by <em>hdr</em> using the +socket <em>sock</em>.</p> +</div> +<div class="admonitionblock note"> +<table> +<tr> +<td class="icon"> +<i class="fa icon-note" title="Note"></i> +</td> +<td class="content"> +This function is provided for API +<a href="nng_compat.3compat.html">compatibility</a> with legacy <em>libnanomsg</em>. +Consider using the relevant <a href="libnng.3.html">modern API</a> instead. +</td> +</tr> +</table> +</div> +<div class="paragraph"> +<p>The <em>flags</em> field may contain the special flag <code>NN_DONTWAIT</code>. +In this case, if the socket is unable to accept more data for sending, +the operation shall not block, but instead will fail with the error <code>EAGAIN</code>.</p> +</div> +<div class="paragraph"> +<p>The <em>hdr</em> points to a structure of type <code>struct nn_msghdr</code>, which has the +following definition:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="pygments highlight"><code data-lang="c"><span></span><span class="tok-k">struct</span> <span class="tok-n">nn_iovec</span> <span class="tok-p">{</span> + <span class="tok-kt">void</span> <span class="tok-o">*</span> <span class="tok-n">iov_base</span><span class="tok-p">;</span> + <span class="tok-kt">size_t</span> <span class="tok-n">iov_len</span><span class="tok-p">;</span> +<span class="tok-p">};</span> + +<span class="tok-k">struct</span> <span class="tok-n">nn_msghdr</span> <span class="tok-p">{</span> + <span class="tok-k">struct</span> <span class="tok-n">nn_iovec</span> <span class="tok-o">*</span><span class="tok-n">msg_iov</span><span class="tok-p">;</span> + <span class="tok-kt">int</span> <span class="tok-n">msg_iovlen</span><span class="tok-p">;</span> + <span class="tok-kt">void</span> <span class="tok-o">*</span> <span class="tok-n">msg_control</span><span class="tok-p">;</span> + <span class="tok-kt">size_t</span> <span class="tok-n">msg_controllen</span><span class="tok-p">;</span> +<span class="tok-p">};</span></code></pre> +</div> +</div> +<div class="paragraph"> +<p>The <code>msg_iov</code> is an array of gather items, permitting the message +to be spread into different memory blocks. +There are <code>msg_iovlen</code> elements in this array, each of which +has the base address (<code>iov_base</code>) and length (<code>iov_len</code>) indicated.</p> +</div> +<div class="paragraph"> +<p>For buffers allocated for zero copy +(such as by <a href="nn_allocmsg.3compat.html"><code>nn_allocmsg()</code></a>), the value +of <code>iov_base</code> should be the address of the pointer to the buffer, +rather than the address of the buffer itself. +In this case, the value of <code>iov_len</code> should be <code>NN_MSG</code>, +as the length is inferred from the allocated message. +If the <code>msg_iovlen</code> field is <code>NN_MSG</code>, then this function will free +the associated buffer after it is done with it, if it returns successfully. +(If the function returns with an error, then the caller retains ownership +of the associated buffer and may retry the operation or free the buffer +at its choice.)</p> +</div> +<div class="paragraph"> +<p>The values of <code>msg_control</code> and <code>msg_controllen</code> describe a buffer +of ancillary data to send the message. +This is currently only useful to provide the message headers +used with <a href="nng.7.html#raw_mode">raw mode</a> sockets. +In all other circumstances these fields should be zero. +Details about this structure are covered in +<a href="nn_cmsg.3compat.html"><code>nn_cmsg(3compat)</code></a>.</p> +</div> +<div class="admonitionblock note"> +<table> +<tr> +<td class="icon"> +<i class="fa icon-note" title="Note"></i> +</td> +<td class="content"> +The send operation is performed asynchronously, and may not have +completed before this function returns control to the caller. +</td> +</tr> +</table> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_return_values">RETURN VALUES</h2> +<div class="sectionbody"> +<div class="paragraph"> +<p>This function returns the number of bytes sent on success, and -1 on error.</p> +</div> +</div> +</div> +<div class="sect1"> +<h2 id="_errors">ERRORS</h2> +<div class="sectionbody"> +<div class="hdlist"> +<table> +<tr> +<td class="hdlist1"> +<code>EAGAIN</code> +</td> +<td class="hdlist2"> +<p>The operation would block.</p> +</td> +</tr> +<tr> +<td class="hdlist1"> +<code>EBADF</code> +</td> +<td class="hdlist2"> +<p>The socket <em>sock</em> is not open.</p> +</td> +</tr> +<tr> +<td class="hdlist1"> +<code>EFSM</code> +</td> +<td class="hdlist2"> +<p>The socket cannot send in this state.</p> +</td> +</tr> +<tr> +<td class="hdlist1"> +<code>EINVAL</code> +</td> +<td class="hdlist2"> +<p>The <em>hdr</em> is invalid.</p> +</td> +</tr> +<tr> +<td class="hdlist1"> +<code>ENOTSUP</code> +</td> +<td class="hdlist2"> +<p>This protocol cannot send.</p> +</td> +</tr> +<tr> +<td class="hdlist1"> +<code>ETIMEDOUT</code> +</td> +<td class="hdlist2"> +<p>Operation timed out.</p> +</td> +</tr> +</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="nn_cmsg.3compat.html">nn_cmsg(3compat)</a>, +<a href="nn_errno.3compat.html">nn_errno(3compat)</a>, +<a href="nn_recv.3compat.html">nn_recv(3compat)</a>, +<a href="nn_send.3compat.html">nn_send(3compat)</a>, +<a href="nn_socket.3compat.html">nn_socket(3compat)</a>, +<a href="nng_compat.3compat.html">nn_compat(3compat)</a>, +<a href="nng.7.html">nng(7)</a></p> +</div> +</div> +</div> +</div> +<link rel="stylesheet" href="./pygments-default.css"> +</body> +</html>
\ No newline at end of file |
