# nng_aio_set_iov(3) Manual Page

## NAME

nng_aio_set_iov - set scatter/gather vector

## 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.

A maximum of eight (8) `nng_iov` members may be supplied.

| Earlier versions of the library could accept longer scatter-gather lists. However, no known consumers have ever needed a scatter-gather list longer than 4 vectors. As a result, the implementation limit was reduced, and heap allocations which could fail were removed.

## RETURN VALUES

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

## ERRORS

`NNG_EINVAL` | Value of specified niov is too large.

## SEE ALSO

nng_aio_alloc(3), nng_aio_cancel(3), nng_aio_count(3), nng_aio_result(3), nng_aio(5), nng_iov(5), nng(7)