]> git.meshlink.io Git - meshlink/commitdiff
Add meshlink_get_self().
authorGuus Sliepen <guus@meshlink.io>
Wed, 28 Oct 2015 21:57:49 +0000 (22:57 +0100)
committerGuus Sliepen <guus@meshlink.io>
Sun, 25 Jun 2017 08:32:08 +0000 (10:32 +0200)
This returns a handle for the local node. This can also be used to determine
our own name using meshlink_get_self(mesh)->name.

src/meshlink++.h
src/meshlink.c
src/meshlink.h
test/basic.c
test/basicpp.cpp

index 8e0745e4869163bc0fe43688e2712f930ccb1b99..346549013e010aa3bcb28292395a2dd45b1258ca 100644 (file)
@@ -274,6 +274,15 @@ namespace meshlink {
                        return (node *)meshlink_get_node(handle, name);
                }
 
+               /// Get a handle for our own node.
+               /** This function returns a handle for the local node.
+                *
+                *  @return             A pointer to a meshlink::node which represents the local node.
+                */
+               node *get_self() {
+                       return (node *)meshlink_get_self(handle);
+               }
+
                /// Get a list of all nodes.
                /** This function returns a list with handles for all known nodes.
                 *
index e9250e2509efd15e920e6ddc04c379d535fef00b..1d682c40b53b2d8bb9911450f9ab61d41c18572e 100644 (file)
@@ -1233,6 +1233,15 @@ char *meshlink_get_fingerprint(meshlink_handle_t *mesh, meshlink_node_t *node) {
        return fingerprint;
 }
 
+meshlink_node_t *meshlink_get_self(meshlink_handle_t *mesh) {
+       if(!mesh) {
+               meshlink_errno = MESHLINK_EINVAL;
+               return NULL;
+       }
+
+       return (meshlink_node_t *)mesh->self;
+}
+
 meshlink_node_t *meshlink_get_node(meshlink_handle_t *mesh, const char *name) {
        if(!mesh || !name) {
                meshlink_errno = MESHLINK_EINVAL;
index cca5db1aae10c43c5c71ac1e42b4517045433cce..651f05c8bd355f54002c90881322f029d303337d 100644 (file)
@@ -329,6 +329,16 @@ extern bool meshlink_send(meshlink_handle_t *mesh, meshlink_node_t *destination,
  */
 extern ssize_t meshlink_get_pmtu(meshlink_handle_t *mesh, meshlink_node_t *destination);
 
+/// Get a handle for our own node.
+/** This function returns a handle for the local node.
+ *
+ *  @param mesh         A handle which represents an instance of MeshLink.
+ *
+ *  @return             A pointer to a meshlink_node_t which represents the local node.
+ *                      The pointer is guaranteed to be valid until meshlink_close() is called.
+ */
+extern meshlink_node_t *meshlink_get_self(meshlink_handle_t *mesh);
+
 /// Get a handle for a specific node.
 /** This function returns a handle for the node with the given name.
  *
index 93b7f5e99462199b7520a52a11f90bed85344e69..d3ac13735e37e98726fbf68d80eb72aefb96d12a 100644 (file)
@@ -16,7 +16,7 @@ int main(int argc, char *argv[]) {
 
        // Check that our own node exists.
 
-       meshlink_node_t *self = meshlink_get_node(mesh, "foo");
+       meshlink_node_t *self = meshlink_get_self(mesh);
        if(!self) {
                fprintf(stderr, "Foo does not know about itself\n");
                return 1;
@@ -59,7 +59,7 @@ int main(int argc, char *argv[]) {
                return 1;
        }
 
-       self = meshlink_get_node(mesh, "foo");
+       self = meshlink_get_self(mesh);
        if(!self) {
                fprintf(stderr, "Foo doesn't know about itself the second time\n");
                return 1;
index c52e2ddbb3014827108b302330ddbdcfc5a11aff..02d4cb61e4b7d70c286b3a77a085d78a9ffb148e 100644 (file)
@@ -15,7 +15,7 @@ int main(int argc, char *argv[]) {
 
        // Check that our own node exists.
 
-       meshlink::node *self = mesh.get_node("foo");
+       meshlink::node *self = mesh.get_self();
        if(!self) {
                cerr << "Foo does not know about itself\n";
                return 1;
@@ -54,7 +54,7 @@ int main(int argc, char *argv[]) {
                return 1;
        }
 
-       self = mesh.get_node("foo");
+       self = mesh.get_self();
        if(!self) {
                cerr << "Foo doesn't know about itself the second time\n";
                return 1;