From c57467057e46be7a2df6534f205c5edc80c9384c Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Fri, 11 Mar 2016 16:17:00 +0100 Subject: [PATCH] Update the C++ header file. --- src/meshlink++.h | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ src/meshlink.h | 1 - 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/src/meshlink++.h b/src/meshlink++.h index 34654901..30d6ae52 100644 --- a/src/meshlink++.h +++ b/src/meshlink++.h @@ -337,6 +337,66 @@ namespace meshlink { return meshlink_add_address(handle, address); } + /** This function performs tries to discover the local node's external address + * by contacting the meshlink.io server. If a reverse lookup of the address works, + * the FQDN associated with the address will be returned. + * + * Please note that this is function only returns a single address, + * even if the local node might have more than one external address. + * In that case, there is no control over which address will be selected. + * Also note that if you have a dynamic IP address, or are behind carrier-grade NAT, + * there is no guarantee that the external address will be valid for an extended period of time. + * + * @return This function returns a pointer to a C string containing the discovered external address, + * or NULL if there was an error looking up the address. + * After get_external_address() returns, the application is free to overwrite or free this string. + */ + bool get_external_address() { + return meshlink_get_external_address(handle); + } + + /// Try to discover the external address for the local node, and add it to its list of addresses. + /** This function is equivalent to: + * + * mesh->add_address(mesh->get_external_address()); + * + * Read the description of get_external_address() for the limitations of this function. + * + * @return This function returns true if the address was added, false otherwise. + */ + bool add_external_address() { + return meshlink_add_external_address(handle); + } + + /// Get the network port used by the local node. + /** This function returns the network port that the local node is listening on. + * + * @param mesh A handle which represents an instance of MeshLink. + * + * @return This function returns the port number, or -1 in case of an error. + */ + int get_port() { + return meshlink_get_port(handle); + } + + /// Set the network port used by the local node. + /** This function sets the network port that the local node is listening on. + * It may only be called when the mesh is not running. + * If unsure, call stop() before calling this function. + * Also note that if your node is already part of a mesh with other nodes, + * that the other nodes may no longer be able to initiate connections to the local node, + * since they will try to connect to the previously configured port. + * + * @param port The port number to listen on. This must be between 0 and 65535. + * If the port is set to 0, then MeshLink will listen on a port + * that is randomly assigned by the operating system every time open() is called. + * + * @return This function returns true if the port was succesfully changed, false otherwise. + */ + bool set_port(int port) { + return meshlink_set_port(handle, port); + } + /// Invite another node into the mesh. /** This function generates an invitation that can be used by another node to join the same mesh as the local node. * The generated invitation is a string containing a URL. diff --git a/src/meshlink.h b/src/meshlink.h index 26c7edb5..7e82cb0d 100644 --- a/src/meshlink.h +++ b/src/meshlink.h @@ -436,7 +436,6 @@ extern bool meshlink_add_address(meshlink_handle_t *mesh, const char *address); * there is no guarantee that the external address will be valid for an extended period of time. * * @param mesh A handle which represents an instance of MeshLink. - * @param address A nul-terminated C string containing the address, which can be either in numeric format or a hostname. * * @return This function returns a pointer to a C string containing the discovered external address, * or NULL if there was an error looking up the address. -- 2.39.2