]> git.meshlink.io Git - meshlink/blobdiff - src/meshlink++.h
Allow the channel send and receive buffer size to be changed.
[meshlink] / src / meshlink++.h
index fbefcea800385a6968c9c94eef75410e5e08de5d..dee2c7060d04bc352b59901f911fc7d8a78a7009 100644 (file)
@@ -650,6 +650,30 @@ public:
                meshlink_set_channel_poll_cb(handle, channel, (meshlink_channel_poll_cb_t)cb);
        }
 
+       /// Set the send buffer size of a channel.
+       /** This function sets the desired size of the send buffer.
+        *  The default size is 128 kB.
+        *
+        *  @param channel   A handle for the channel.
+        *  @param size      The desired size for the send buffer.
+        *                   If a NULL pointer is given, the callback will be disabled.
+        */
+       void set_channel_sndbuf(channel *channel, size_t size) {
+               meshlink_set_channel_sndbuf(handle, channel, size);
+       }
+
+       /// Set the receive buffer size of a channel.
+       /** This function sets the desired size of the receive buffer.
+        *  The default size is 128 kB.
+        *
+        *  @param channel   A handle for the channel.
+        *  @param size      The desired size for the send buffer.
+        *                   If a NULL pointer is given, the callback will be disabled.
+        */
+       void set_channel_rcvbuf(channel *channel, size_t size) {
+               meshlink_set_channel_rcvbuf(handle, channel, size);
+       }
+
        /// 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.
@@ -735,7 +759,9 @@ public:
        }
 
        /// Transmit data on a channel asynchronously
-       /** This queues data to send to the remote node.
+       /** This registers a buffer that will be used to send data to the remote node.
+        *  Multiple buffers can be registered, in which case data will be sent in the order the buffers were registered.
+        *  While there are still buffers with unsent data, the poll callback will not be called.
         *
         *  @param channel      A handle for the channel.
         *  @param data         A pointer to a buffer containing data sent by the source, or NULL if there is no data to send.
@@ -750,6 +776,24 @@ public:
                return meshlink_channel_aio_send(handle, channel, data, len, cb, priv);
        }
 
+       /// Receive data on a channel asynchronously
+       /** This registers a buffer that will be filled with incoming channel data.
+        *  Multiple buffers can be registered, in which case data will be received in the order the buffers were registered.
+        *  While there are still buffers that have not been filled, the receive callback will not be called.
+        *
+        *  @param channel      A handle for the channel.
+        *  @param data         A pointer to a buffer that will be filled with incoming data.
+        *                      After meshlink_channel_aio_receive() returns, the buffer may not be modified or freed by the application
+        *                      until the callback routine is called.
+        *  @param len          The length of the data.
+        *  @param cb           A pointer to the function which will be called when MeshLink has finished using the buffer.
+        *
+        *  @return             True if the buffer was enqueued, false otherwise.
+        */
+       bool channel_aio_receive(channel *channel, const void *data, size_t len, meshlink_aio_cb_t cb, void *priv) {
+               return meshlink_channel_aio_receive(handle, channel, data, len, cb, priv);
+       }
+
        /// Get the amount of bytes in the send buffer.
        /** This returns the amount of bytes in the send buffer.
         *  These bytes have not been received by the peer yet.