diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-02-06 16:26:25 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-02-06 16:26:25 -0800 |
| commit | 0fe0f3e744f19e81ae559315ff2b422158fb6329 (patch) | |
| tree | 88216b31aaa9c275de28903c2234b36f4cecba14 | |
| parent | 51bebe0c6f137d293dbb6f1194ad3f6fca5b79e9 (diff) | |
| download | nng-0fe0f3e744f19e81ae559315ff2b422158fb6329.tar.gz nng-0fe0f3e744f19e81ae559315ff2b422158fb6329.tar.bz2 nng-0fe0f3e744f19e81ae559315ff2b422158fb6329.zip | |
fixes #231 Need nng_aio_finish routine
| -rw-r--r-- | docs/nng_aio_finish.adoc | 59 | ||||
| -rw-r--r-- | src/nng.c | 7 | ||||
| -rw-r--r-- | src/nng.h | 7 |
3 files changed, 73 insertions, 0 deletions
diff --git a/docs/nng_aio_finish.adoc b/docs/nng_aio_finish.adoc new file mode 100644 index 00000000..92a680f4 --- /dev/null +++ b/docs/nng_aio_finish.adoc @@ -0,0 +1,59 @@ += nng_aio_finish(3) +:doctype: manpage +:manmanual: nng +:mansource: nng +:manvolnum: 3 +:copyright: Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] + \ + Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV] + \ + {blank} + \ + This document is supplied under the terms of the \ + https://opensource.org/licenses/MIT[MIT License]. + +== NAME + +nng_aio_finish - finish asynchronous I/O operation + +== SYNOPSIS + +[source, c] +----------- +#include <nng/nng.h> + +void nng_aio_finish(nng_aio *aio, int err); +----------- + + +== DESCRIPTION + +The `nng_aio_finish()` function marks operation associated with _aio_ as +complete, with the status _err_. This will be the result returned by +<<nng_aio_result#,nng_aio_result(3)>>. + +This function causes the callback associated with the _aio_ to called. + +WARNING: It is mandatory that operation "providers" call this function +*EXACTLY ONCE* when they are finished with the operation. After calling this +function they *MUST NOT* perform any further accesses the _aio_. + +WARNING: This function is only for I/O providers (those actually performing +the operation such as HTTP handler function or a transport provider); ordinary +users of the _aio_ should not have any need for this function. + +== RETURN VALUES + +None. + +== ERRORS + +None. + +== SEE ALSO + +<<nng_aio_alloc#,nng_aio_alloc(3)>>, +<<nng_aio_cancel#,nng_aio_cancel(3)>>, +<<nng_aio_result#,nng_aio_result(3)>>, +<<nng#,nng(7)>> + +== COPYRIGHT + +{copyright} @@ -1136,6 +1136,13 @@ nng_aio_get_output(nng_aio *aio, unsigned index) return (nni_aio_get_output(aio, index)); } +void +nng_aio_finish(nng_aio *aio, int rv) +{ + // Preserve the count. + return (nni_aio_finish(aio, rv, nni_aio_count(aio))); +} + #if 0 int nng_snapshot_create(nng_socket sock, nng_snapshot **snapp) @@ -336,6 +336,13 @@ NNG_DECL void nng_aio_set_timeout(nng_aio *, nng_duration); // to succeed if n <= 4, otherwise it may fail due to NNG_ENOMEM. NNG_DECL int nng_aio_set_iov(nng_aio *, unsigned, const nng_iov *); +// nng_aio_finish is used to "finish" an asynchronous operation. +// It should only be called by "providers" (such as HTTP server API users). +// The argument is the value that nng_aio_result() should return. +// IMPORTANT: Callers must ensure that this is called EXACTLY ONCE on any +// given aio. +NNG_DECL void nng_aio_finish(nng_aio *, int); + // Message API. NNG_DECL int nng_msg_alloc(nng_msg **, size_t); NNG_DECL void nng_msg_free(nng_msg *); |
