return meshlink_import(handle, data);
}
+ /// Forget any information about a node.
+ /** This function allows the local node to forget any information it has about a node,
+ * and if possible will remove any data it has stored on disk about the node.
+ *
+ * Any open channels to this node must be closed before calling this function.
+ *
+ * After this call returns, the node handle is invalid and may no longer be used, regardless
+ * of the return value of this call.
+ *
+ * Note that this function does not prevent MeshLink from actually forgetting about a node,
+ * or re-learning information about a node at a later point in time. It is merely a hint that
+ * the application does not care about this node anymore and that any resources kept could be
+ * cleaned up.
+ *
+ * \memberof meshlink_node
+ * @param node A pointer to a struct meshlink_node describing the node to be forgotten.
+ *
+ * @return This function returns true if all currently known data about the node has been forgotten, false otherwise.
+ */
+ bool forget_node(node *node) {
+ return meshlink_forget_node(handle, node);
+ }
+
/// Blacklist a node from the mesh.
/** This function causes the local node to blacklist another node.
* The local node will drop any existing connections to that node,
* and will not send data to it nor accept any data received from it any more.
*
* @param node A pointer to a meshlink::node describing the node to be blacklisted.
+ *
+ * @return This function returns true if the node has been whitelisted, false otherwise.
*/
- void blacklist(node *node) {
+ bool blacklist(node *node) {
return meshlink_blacklist(handle, node);
}
+ /// Blacklist a node from the mesh by name.
+ /** This function causes the local node to blacklist another node by name.
+ * The local node will drop any existing connections to that node,
+ * and will not send data to it nor accept any data received from it any more.
+ *
+ * If no node by the given name is known, it is created.
+ *
+ * @param name The name of the node to blacklist.
+ *
+ * @return This function returns true if the node has been blacklisted, false otherwise.
+ */
+ bool blacklist_by_name(const char *name) {
+ return meshlink_blacklist_by_name(handle, name);
+ }
+
+ /// Whitelist a node on the mesh.
+ /** This function causes the local node to whitelist another node.
+ * The local node will allow connections to and from that node,
+ * and will send data to it and accept any data received from it.
+ *
+ * @param node A pointer to a meshlink::node describing the node to be whitelisted.
+ *
+ * @return This function returns true if the node has been whitelisted, false otherwise.
+ */
+ bool whitelist(node *node) {
+ return meshlink_whitelist(handle, node);
+ }
+
+ /// Whitelist a node on the mesh by name.
+ /** This function causes the local node to whitelist a node by name.
+ * The local node will allow connections to and from that node,
+ * and will send data to it and accept any data received from it.
+ *
+ * If no node by the given name is known, it is created.
+ * This is useful if new nodes are blacklisted by default.
+ *
+ * \memberof meshlink_node
+ * @param node A pointer to a struct meshlink_node describing the node to be whitelisted.
+ *
+ * @return This function returns true if the node has been whitelisted, false otherwise.
+ */
+ bool whitelist_by_name(const char *name) {
+ return meshlink_whitelist_by_name(handle, name);
+ }
+
/// 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.
meshlink_set_channel_rcvbuf(handle, channel, 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.
+ *
+ * @param channel A handle for the channel.
+ * @param timeout The timeout in seconds after which unresponsive channels will be reported as closed.
+ * The default is 60 seconds.
+ */
+ void set_node_channel_timeout(node *node, int timeout) {
+ meshlink_set_node_channel_timeout(handle, node, timeout);
+ }
+
/// 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.
* @param cb A pointer to the function which will be called when the remote node sends data to the local node.
* @param data A pointer to a buffer containing data to already queue for sending.
* @param len The length of the data.
+ * If len is 0, the data pointer is copied into the channel's priv member.
* @param flags A bitwise-or'd combination of flags that set the semantics for this channel.
*
* @return A handle for the channel, or NULL in case of an error.
* @param port The port number the peer wishes to connect to.
* @param data A pointer to a buffer containing data to already queue for sending.
* @param len The length of the data.
+ * If len is 0, the data pointer is copied into the channel's priv member.
* @param flags A bitwise-or'd combination of flags that set the semantics for this channel.
*
* @return A handle for the channel, or NULL in case of an error.