X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fmeshlink.c;h=4538548d97a17baf46739925b983d8876c4995b6;hb=c6cc7da56d108f05ea6f9a2f765f699e6e2353db;hp=bd74b1d8d358ba93ee6afbbb42c7e1df4b5f9d39;hpb=ac24ceb9a5976628dd4ac31b2b502f1caac2b2ec;p=meshlink diff --git a/src/meshlink.c b/src/meshlink.c index bd74b1d8..4538548d 100644 --- a/src/meshlink.c +++ b/src/meshlink.c @@ -1961,6 +1961,21 @@ static void channel_receive(meshlink_handle_t *mesh, meshlink_node_t *source, co utcp_recv(n->utcp, data, len); } +static void channel_poll(struct utcp_connection *connection, size_t len) { + meshlink_channel_t *channel = connection->priv; + if(!channel) + abort(); + node_t *n = channel->node; + meshlink_handle_t *mesh = n->mesh; + if(channel->poll_cb) + channel->poll_cb(mesh, channel, len); +} + +void meshlink_set_channel_poll_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, meshlink_channel_poll_cb_t cb) { + channel->poll_cb = cb; + utcp_set_poll_cb(channel->c, cb ? channel_poll : NULL); +} + void meshlink_set_channel_accept_cb(meshlink_handle_t *mesh, meshlink_channel_accept_cb_t cb) { pthread_mutex_lock(&mesh->mesh_mutex); mesh->channel_accept_cb = cb;