nn_send(3)
==========

NAME
----
nn_send - send a message


SYNOPSIS
--------
*#include <nanomsg/nn.h>*

*int nn_send (int 's', const void '*buf', size_t 'len', int 'flags');*

DESCRIPTION
-----------
The function will send a message containing the data from buffer pointed to
by 'buf' parameter to the socket 's'. The message will be 'len' bytes long.

Alternatively, to send a buffer allocated by linknanomsg:nn_allocmsg[3] function
set the buf parameter to point to the pointer to the buffer and 'len' parameter
to _NN_MSG_ constant. In this case a successful call to _nn_send_ will
deallocate the buffer. Trying to deallocate it afterwards will result in
undefined behaviour.

Which of the peers the message will be sent to is determined by
the particular socket type.

The 'flags' argument is a combination of the flags defined below:

*NN_DONTWAIT*::
Specifies that the operation should be performed in non-blocking mode. If the
message cannot be sent straight away, the function will fail with 'errno' set
to EAGAIN.


RETURN VALUE
------------
If the function succeeds, the number of bytes in the message is returned.
Otherwise, a negative number is returned and 'errno' is set to to one of the
values defined below.


ERRORS
------
*EBADF*::
The provided socket is invalid.
*ENOTSUP*::
The operation is not supported by this socket type.
*EFSM*::
The operation cannot be performed on this socket at the moment because the socket
is not in the appropriate state.  This error may occur with socket types that
switch between several states.
*EAGAIN*::
Non-blocking mode was requested and the message cannot be sent at the moment.
*EINTR*::
The operation was interrupted by delivery of a signal before the message was
sent.
*ETIMEDOUT*::
Individual socket types may define their own specific timeouts. If such timeout
is hit, this error will be returned.
*ETERM*::
The library is terminating.

EXAMPLE
-------

----
nbytes = nn_send (s, "ABC", 3, 0);
assert (nbytes == 3);
----


SEE ALSO
--------
linknanomsg:nn_recv[3]
linknanomsg:nn_sendmsg[3]
linknanomsg:nn_socket[3]
linknanomsg:nanomsg[7]

AUTHORS
-------
Martin Sustrik <sustrik@250bpm.com>

