From 2fbfd7e5c3ad245de2c905720eb8d9d5b27b6739 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Mon, 27 Dec 2021 23:10:29 -0800 Subject: Introduce nng_device_aio(). This function is like nng_device(), but runs asynchronously. Also, this fixes #1503 nng_device causes nng_close to blocking --- include/nng/nng.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'include') diff --git a/include/nng/nng.h b/include/nng/nng.h index d40f5135..bb3b6b14 100644 --- a/include/nng/nng.h +++ b/include/nng/nng.h @@ -973,8 +973,18 @@ NNG_DECL uint64_t nng_stat_timestamp(nng_stat *); // Device functionality. This connects two sockets together in a device, // which means that messages from one side are forwarded to the other. +// This version is synchronous, which means the caller will block until +// one of the sockets is closed. Note that caller is responsible for +// finally closing both sockets when this function returns. NNG_DECL int nng_device(nng_socket, nng_socket); +// Asynchronous form of nng_device. When this succeeds, the device is +// left intact and functioning in the background, until one of the sockets +// is closed or the application exits. The sockets may be shut down if +// the device fails, but the caller is responsible for ultimately closing +// the sockets properly after the device is torn down. +NNG_DECL void nng_device_aio(nng_aio *, nng_socket, nng_socket); + // Symbol name and visibility. TBD. The only symbols that really should // be directly exported to runtimes IMO are the option symbols. And frankly // they have enough special logic around them that it might be best not to -- cgit v1.2.3-70-g09d2