SYNOPSIS
#include <nng/nng.h>
int nng_aio_set_iov(nng_aio *aio, unsigned int niov, nng_iov *iov);
DESCRIPTION
The nng_aio_set_iov()
function sets a scatter/gather vector iov on the
handle aio.
The iov is a pointer to an array of niov nng_iov
structures, which have
the following definition:
typedef struct nng_iov {
void * iov_buf;
size_t iov_len;
};
The iov is copied into storage in the aio itself, so that callers
may use stack allocated nng_iov
structures. The values pointed to
by the iov_buf
members are not copied by this function though.
Up to four nng_iov
members may be supplied without causing any
allocations, and thus this operation is guaranteed to succeed for
values of niov less than four.
More than four (4) nng_iov
members may be supplied, but this may require
heap allocations, and so the operation may fail with NNG_ENOMEM
.
Additionally, not every operation can support longer vectors; the
actual limit is determined by the system, but is generally at least
sixteen (16). Furthermore, values for niov larger than sixty-four (64) will
generally result in NNG_EINVAL
.
RETURN VALUES
This function returns 0 on success, and non-zero otherwise.
ERRORS
NNG_ENOMEM
-
Insufficient free memory to perform operation.
NNG_EINVAL
-
Value of specified niov is too large.