nanomsg next generation NNG  
Home GitHub Documentation

This documentation is for version v1.1.0 of nng, but the latest released version is v1.3.2. see the documentation for v1.3.2 for the most up-to-date information.


#include <nng/nng.h>

int nng_aio_set_iov(nng_aio *aio, unsigned int niov, nng_iov *iov);


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.


This function returns 0 on success, and non-zero otherwise.



Insufficient free memory to perform operation.


Value of specified niov is too large.

NNG Reference Manual vv1.1.0 © 2019 Staysail Systems, Inc, © 2018 Capitar IT Group BV
This document is supplied under the MIT License.
nanomsg™ and nng™ are trademarks of Garrett D'Amore.