X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;ds=sidebyside;f=examples%2Fmanynodes.c;h=f0fc22da8443621dc448a96dc1410a0b2b240bd4;hb=4c9d02d9b204f3300c28331b00baa32b2690a930;hp=7b23fc5197f14aa7a7e19f9d59cac1cd1ee54d36;hpb=01eaeb3c9fa60ae9c6e5b866acd9baef79622d99;p=meshlink diff --git a/examples/manynodes.c b/examples/manynodes.c index 7b23fc51..f0fc22da 100644 --- a/examples/manynodes.c +++ b/examples/manynodes.c @@ -4,7 +4,12 @@ #include #include #include + +#if !defined(_WIN32) && !defined(__APPLE__) #include +#elif defined(__APPLE__) +#include +#endif #include "../src/meshlink.h" #include "../src/devtools.h" @@ -18,7 +23,7 @@ static int n = 10; static meshlink_handle_t **mesh; - +static char* namesprefix="machine1"; static int nodeindex = 0; static meshlink_node_t **nodes; @@ -95,7 +100,7 @@ static bool exportmeshgraph(const char* path) return false; } - if(!devtool_export_json_all_edges_state(mesh[nodeindex], stream)) + if(!devtool_export_json_all_edges_state(mesh[0], stream)) { fclose(stream); fprintf(stderr, "could not export graph\n"); @@ -113,11 +118,12 @@ void exportmeshgraph_timer(int signum) gettimeofday(&ts, NULL); char name[1024]; - snprintf(name, sizeof(name), "graph_%ld_%03ld.json", ts.tv_sec, ts.tv_usec/1000); + snprintf(name, sizeof(name), "%sgraph_%ld_%03ld.json", namesprefix,ts.tv_sec, ts.tv_usec/1000); exportmeshgraph(name); } +#ifndef _WIN32 static bool exportmeshgraph_started = false; static bool exportmeshgraph_end(const char* none) @@ -172,6 +178,17 @@ static bool exportmeshgraph_begin(const char* timeout_str) return true; } +#else +static bool exportmeshgraph_end(const char* none) +{ + return false; +} + +static bool exportmeshgraph_begin(const char* timeout_str) +{ + return false; +} +#endif static void parse_command(char *buf) { char *arg = strchr(buf, ' '); @@ -257,7 +274,8 @@ static void parse_command(char *buf) { } nodeindex = atoi(arg); printf("Index is now %d\n",nodeindex); - + } else if(!strcasecmp(buf, "stop")) { + meshlink_stop(mesh[nodeindex]); } else if(!strcasecmp(buf, "quit")) { printf("Bye!\n"); fclose(stdin); @@ -273,6 +291,7 @@ static void parse_command(char *buf) { "/eg Export graph as json file.\n" "/test Test functionality sending some data to all nodes\n" "/select Select the active node running the user commands\n" + "/stop Call meshlink_stop, use /select first to select which node to stop\n" "/quit Exit this program.\n" ); } else { @@ -340,7 +359,6 @@ static void parse_input(char *buf) { int main(int argc, char *argv[]) { const char *basebase = ".manynodes"; - const char *namesprefix = "machine1"; const char *graphexporttimeout = NULL; char buf[1024]; @@ -363,8 +381,12 @@ int main(int argc, char *argv[]) { mesh = calloc(n, sizeof *mesh); - meshlink_set_log_cb(NULL, MESHLINK_WARNING, log_message); + meshlink_set_log_cb(NULL, MESHLINK_DEBUG, log_message); +#ifndef _WIN32 mkdir(basebase, 0750); +#else + mkdir(basebase); +#endif char filename[PATH_MAX]; char nodename[100]; @@ -372,8 +394,13 @@ int main(int argc, char *argv[]) { snprintf(nodename, sizeof nodename, "%snode%d", namesprefix,i); snprintf(filename, sizeof filename, "%s/%s", basebase, nodename); bool itsnew = access(filename, R_OK); - mesh[i] = meshlink_open(filename, nodename, "manynodes", i%_DEV_CLASS_MAX); - meshlink_set_log_cb(mesh[i], MESHLINK_WARNING, log_message); + if (n/(i+1) > n/4) { + mesh[i] = meshlink_open(filename, nodename, "manynodes", DEV_CLASS_BACKBONE); + } + else { + mesh[i] = meshlink_open(filename, nodename, "manynodes", DEV_CLASS_PORTABLE); + } + meshlink_set_log_cb(mesh[i], MESHLINK_DEBUG, log_message); if(!mesh[i]) { fprintf(stderr, "errno is: %d\n", meshlink_errno); fprintf(stderr, "Could not open %s: %s\n", filename, meshlink_strerror(meshlink_errno));