X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fmeshlink%2B%2B.h;h=4f35e8a97f7c95def970cfbab06a376751818f19;hb=c6cc7da56d108f05ea6f9a2f765f699e6e2353db;hp=ef578b113068cc8993bf3728d547f194c45bf06a;hpb=ac24ceb9a5976628dd4ac31b2b502f1caac2b2ec;p=meshlink diff --git a/src/meshlink++.h b/src/meshlink++.h index ef578b11..4f35e8a9 100644 --- a/src/meshlink++.h +++ b/src/meshlink++.h @@ -77,6 +77,13 @@ namespace meshlink { */ typedef void (*channel_receive_cb_t)(mesh *mesh, channel *channel, const void *data, size_t len); + /// A callback that is called when data can be send on a channel. + /** @param mesh A handle which represents an instance of MeshLink. + * @param channel A handle for the channel. + * @param len The maximum length of data that is guaranteed to be accepted by a call to channel_send(). + */ + typedef void (*channel_poll_cb_t)(mesh *mesh, channel *channel, size_t len); + /// A class describing a MeshLink node. class node: public meshlink_node_t { }; @@ -292,6 +299,21 @@ namespace meshlink { return meshlink_set_channel_accept_cb(this, (meshlink_channel_accept_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 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. + */ + void set_channel_poll_cb(channel *channel, channel_poll_cb_t cb) { + return meshlink_set_channel_poll_cb(this, (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.