| 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, -1 is returned and 'errno' is set to to one of the |
| values defined below. |
| |
| |
| ERRORS |
| ------ |
| *EFAULT*:: |
| 'buf' is NULL or 'len' is NN_MSG and the message pointer (pointed to by |
| 'buf') is NULL. |
| *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 |
| ------- |
| |
| Using data directly: |
| |
| ---- |
| nbytes = nn_send (s, "ABC", 3, 0); |
| assert (nbytes == 3); |
| ---- |
| |
| Using a pre-allocated message buffer: |
| |
| ---- |
| void *msg = nn_allocmsg(3, 0); |
| strncpy(msg, "ABC", 3); |
| nbytes = nn_send (s, &msg, NN_MSG, 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> |
| |