X-Git-Url: http://git.meshlink.io/?p=meshlink;a=blobdiff_plain;f=src%2Fmeshlink.h;h=31583e510050589506e493a6afff798aa3eda015;hp=5c5196ab7097ae5e91adb6312017d01ece5ab541;hb=57114d942004e8a34ff22aadc0c620a0aabbb423;hpb=83f02487f4197e4850b54f086c0f9df3f7260297 diff --git a/src/meshlink.h b/src/meshlink.h index 5c5196ab..31583e51 100644 --- a/src/meshlink.h +++ b/src/meshlink.h @@ -1139,7 +1139,9 @@ extern ssize_t meshlink_channel_send(meshlink_handle_t *mesh, meshlink_channel_t typedef void (*meshlink_aio_cb_t)(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len, void *priv); /// Transmit data on a channel asynchronously -/** This queues data to send to the remote node. +/** This registers a buffer that will be used to send data to the remote node. + * Multiple buffers can be registered, in which case data will be sent in the order the buffers were registered. + * While there are still buffers with unsent data, the poll callback will not be called. * * @param mesh A handle which represents an instance of MeshLink. * @param channel A handle for the channel. @@ -1153,6 +1155,23 @@ typedef void (*meshlink_aio_cb_t)(meshlink_handle_t *mesh, meshlink_channel_t *c */ extern bool meshlink_channel_aio_send(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len, meshlink_aio_cb_t cb, void *priv); +/// Receive data on a channel asynchronously +/** This registers a buffer that will be filled with incoming channel data. + * Multiple buffers can be registered, in which case data will be received in the order the buffers were registered. + * While there are still buffers that have not been filled, the receive callback will not be called. + * + * @param mesh A handle which represents an instance of MeshLink. + * @param channel A handle for the channel. + * @param data A pointer to a buffer that will be filled with incoming data. + * After meshlink_channel_aio_receive() returns, the buffer may not be modified or freed by the application + * until the callback routine is called. + * @param len The length of the data. + * @param cb A pointer to the function which will be called when MeshLink has finished using the buffer. + * + * @return True if the buffer was enqueued, false otherwise. + */ +extern bool meshlink_channel_aio_receive(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len, meshlink_aio_cb_t cb, void *priv); + /// Get channel flags. /** This returns the flags used when opening this channel. *