- /// Close the MeshLink handle.
- /** This function calls meshlink_stop() if necessary,
- * and frees all memory allocated by MeshLink.
- * Afterwards, the handle and any pointers to a struct meshlink_node are invalid.
- */
- static void close(mesh *mesh) {
- meshlink_close(mesh);
- }
+ static bool channel_accept_trampoline(meshlink_handle_t *handle, meshlink_channel *channel, uint16_t port, const void *data, size_t len)
+ {
+ meshlink::mesh* that = static_cast<mesh*>(handle->priv);
+ bool accepted = that->channel_accept(static_cast<meshlink::channel*>(channel), port, data, len);
+ if (accepted)
+ {
+ meshlink_set_channel_poll_cb(handle, channel, &channel_poll_trampoline);
+ }
+ return accepted;
+ }
+
+ static void channel_receive_trampoline(meshlink_handle_t *handle, meshlink_channel *channel, const void* data, size_t len)
+ {
+ meshlink::mesh* that = static_cast<mesh*>(handle->priv);
+ that->channel_receive(static_cast<meshlink::channel*>(channel), data, len);
+ }
+
+ static void channel_poll_trampoline(meshlink_handle_t *handle, meshlink_channel *channel, size_t len)
+ {
+ meshlink::mesh* that = static_cast<mesh*>(handle->priv);
+ that->channel_poll(static_cast<meshlink::channel*>(channel), len);
+ }
+
+ meshlink_handle_t* handle;
+ };