diff options
| author | Garrett D'Amore <garrett@damore.org> | 2017-03-29 13:07:35 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2017-03-29 13:07:35 -0700 |
| commit | 374f93a18edca2e0656c337a5b54927169ec31fa (patch) | |
| tree | cbaef995db10cfafd795953be203de744dc688c9 /src/core/platform.h | |
| parent | 6091cf7e1c030417e1fd29c66160e71bcbe4f984 (diff) | |
| download | nng-374f93a18edca2e0656c337a5b54927169ec31fa.tar.gz nng-374f93a18edca2e0656c337a5b54927169ec31fa.tar.bz2 nng-374f93a18edca2e0656c337a5b54927169ec31fa.zip | |
TCP (POSIX) async send/recv working. Other changes.
Transport-level pipe initialization is now sepearate and explicit.
The POSIX send/recv logic still uses threads under the hood, but
makes use of the AIO framework for send/recv. This is a key stepping
stone towards enabling poll() or similar async I/O approaches.
Diffstat (limited to 'src/core/platform.h')
| -rw-r--r-- | src/core/platform.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/core/platform.h b/src/core/platform.h index b1e824e2..1644973c 100644 --- a/src/core/platform.h +++ b/src/core/platform.h @@ -174,7 +174,7 @@ extern int nni_plat_lookup_host(const char *, nni_sockaddr *, int); // nni_plat_tcp_init initializes the socket, for example it can // set underlying file descriptors to -1, etc. -extern int nni_plat_tcp_init(nni_plat_tcpsock *); +extern int nni_plat_tcp_init(nni_plat_tcpsock **); // nni_plat_tcp_fini just closes a TCP socket, and releases any related // resources. @@ -203,14 +203,17 @@ extern int nni_plat_tcp_accept(nni_plat_tcpsock *, nni_plat_tcpsock *); extern int nni_plat_tcp_connect(nni_plat_tcpsock *, const nni_sockaddr *, const nni_sockaddr *); -// nni_plat_tcp_send sends data to the remote side. The platform is -// responsible for attempting to send all of the data. The iov count -// will never be larger than 4. THe platform may modify the iovs. +// nni_plat_tcp_aio_send sends the data to the remote side asynchronously. +// The data to send is stored in the a_iov field of the aio, and the array +// of iovs will never be larger than 4. The platform may modify the iovs, +// or the iov list. +extern int nni_plat_tcp_aio_send(nni_plat_tcpsock *, nni_aio *); extern int nni_plat_tcp_send(nni_plat_tcpsock *, nni_iov *, int); // nni_plat_tcp_recv recvs data into the buffers provided by the // iovs. The implementation does not return until the iovs are completely // full, or an error condition occurs. +extern int nni_plat_tcp_aio_recv(nni_plat_tcpsock *, nni_aio *); extern int nni_plat_tcp_recv(nni_plat_tcpsock *, nni_iov *, int); // nni_plat_ipc_init initializes the socket, for example it can |
