]> git.meshlink.io Git - meshlink/blobdiff - src/meshlink++.h
Allow the application to provide channel send/receive buffers.
[meshlink] / src / meshlink++.h
index 551913d4ba2a94ceb4df51852dd8595ce563a28d..51bc5e37a91792523bfeb8633b951886f7e4a1b9 100644 (file)
@@ -885,6 +885,43 @@ public:
                meshlink_set_channel_rcvbuf(handle, channel, size);
        }
 
+       /// Set the flags of a channel.
+       /** This function allows changing some of the channel flags.
+        *  Currently only MESHLINK_CHANNEL_NO_PARTIAL and MESHLINK_CHANNEL_DROP_LATE are supported, other flags are ignored.
+        *  These flags only affect the local side of the channel with the peer.
+        *  The changes take effect immediately.
+        *
+        *  @param channel   A handle for the channel.
+        *  @param flags     A bitwise-or'd combination of flags that set the semantics for this channel.
+        */
+       void set_channel_flags(channel *channel, uint32_t flags) {
+               meshlink_set_channel_flags(handle, channel, flags);
+       }
+
+       /// Set the send buffer storage of a channel.
+       /** This function provides MeshLink with a send buffer allocated by the application.
+       *
+       *  @param channel   A handle for the channel.
+       *  @param buf       A pointer to the start of the buffer.
+       *                   If a NULL pointer is given, MeshLink will use its own internal buffer again.
+       *  @param size      The size of the buffer.
+       */
+       void set_channel_sndbuf_storage(channel *channel, void *buf, size_t size) {
+               meshlink_set_channel_sndbuf_storage(handle, channel, buf, size);
+       }
+
+       /// Set the receive buffer storage of a channel.
+       /** This function provides MeshLink with a receive buffer allocated by the application.
+       *
+       *  @param channel   A handle for the channel.
+       *  @param buf       A pointer to the start of the buffer.
+       *                   If a NULL pointer is given, MeshLink will use its own internal buffer again.
+       *  @param size      The size of the buffer.
+       */
+       void set_channel_rcvbuf_storage(channel *channel, void *buf, size_t size) {
+               meshlink_set_channel_rcvbuf_storage(handle, channel, buf, size);
+       }
+
        /// Set the connection timeout used for channels to the given node.
        /** This sets the timeout after which unresponsive channels will be reported as closed.
         *  The timeout is set for all current and future channels to the given node.