X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fmeshlink.h;h=6a83f6c60b41772c8ea529675ed737e9f45fa6a9;hb=c6cc7da56d108f05ea6f9a2f765f699e6e2353db;hp=17545ed289b4c464dadc9e0ba53ca7108a74348b;hpb=ac24ceb9a5976628dd4ac31b2b502f1caac2b2ec;p=meshlink diff --git a/src/meshlink.h b/src/meshlink.h index 17545ed2..6a83f6c6 100644 --- a/src/meshlink.h +++ b/src/meshlink.h @@ -524,6 +524,15 @@ typedef bool (*meshlink_channel_accept_cb_t)(meshlink_handle_t *mesh, meshlink_c */ typedef void (*meshlink_channel_receive_cb_t)(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len); +/// A callback informing the application when data can be sent on a channel. +/** This function is called whenever there is enough free buffer space so a call to meshlink_channel_send() will succeed. + * + * @param mesh A handle which represents an instance of MeshLink. + * @param channel A handle for the channel. + * @param len The maximum amount of data that is guaranteed to be accepted by meshlink_channel_send(). + */ +typedef void (*meshlink_channel_poll_cb_t)(meshlink_handle_t *mesh, meshlink_channel_t *channel, size_t len); + /// Set the accept callback. /** This functions sets the callback that is called whenever another node sends data to the local node. * The callback is run in MeshLink's own thread. @@ -553,6 +562,20 @@ extern void meshlink_set_channel_accept_cb(meshlink_handle_t *mesh, meshlink_cha */ extern void meshlink_set_channel_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, meshlink_channel_receive_cb_t cb); +/// Set the poll callback. +/** This functions sets the callback that is called whenever data can be sent to another node. + * The callback is run in MeshLink's own thread. + * It is therefore important that the callback uses apprioriate methods (queues, pipes, locking, etc.) + * to pass data to or from the application's thread. + * The callback should also not block itself and return as quickly as possible. + * + * @param mesh A handle which represents an instance of MeshLink. + * @param channel A handle for the channel. + * @param cb A pointer to the function which will be called when data can be sent to another node. + * If a NULL pointer is given, the callback will be disabled. + */ +extern void meshlink_set_channel_poll_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, meshlink_channel_poll_cb_t cb); + /// Open a reliable stream channel to another node. /** This function is called whenever a remote node wants to open a channel to the local node. * The application then has to decide whether to accept or reject this channel.