# nng_aio_set_timeout(3) Manual Page

## NAME

nng_aio_set_timeout - set asynchronous I/O timeout

## SYNOPSIS

    #include <nng/nng.h>

    typedef int nng_duration;
    void nng_aio_set_timeout(nng_aio *aio, nng_duration timeout);

    typedef uint64_t nng_time;
    void nng_aio_set_expire(nng_aio *aio, nng_time expiration);

## DESCRIPTION

The `nng_aio_set_timeout()` function sets a timeout for the asynchronous operation associated with aio. This causes a timer to be started when the operation is actually started. If the timer expires before the operation is completed, then it is aborted with an error of `NNG_ETIMEDOUT`. The timeout is specified as a relative number of milliseconds.

If the timeout is `NNG_DURATION_INFINITE`, then no timeout is used. If the timeout is `NNG_DURATION_DEFAULT`, then a "default" or socket-specific timeout is used. (This is frequently the same as `NNG_DURATION_INFINITE`.)

The `nng_aio_set_expire()` function is similar to `nng_aio_set_timeout()`, but sets an absolute expiration time based on the system clock. The expiration is expressed as a number of milliseconds since some point in the past. The `nng_clock()` function can be used to determine the current value of the clock.

| As most operations involve some context switching, it is usually a good idea to allow at least a few tens of milliseconds before timing them out — a too small timeout might not allow the operation to properly begin before giving up!

The value of timeout set for the aio is persistent, so that if the handle is reused for multiple operations, they will have the same relative timeout.

## RETURN VALUES

None.

## ERRORS

None.

## SEE ALSO

nng_aio_alloc(3), nng_aio_cancel(3), nng_aio_result(3), nng_aio(5), nng_duration(5), nng(7)