#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);
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.
Tip
|
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.