X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=test%2Fchannels-fork.c;h=cf916f095a5a3d71c6b5c9153e14bb7f6bb3bc45;hb=269c5eaed0f3333f014e04835a304bdfa9275e53;hp=a95efbe2f98def72ee5d31cba93ef11e1d7cba20;hpb=5dec7459d9920c930bdfb3ac0f2a3740a6247ec0;p=meshlink diff --git a/test/channels-fork.c b/test/channels-fork.c index a95efbe2..cf916f09 100644 --- a/test/channels-fork.c +++ b/test/channels-fork.c @@ -1,4 +1,4 @@ -#define _GNU_SOURCE +#define _GNU_SOURCE 1 #include #include #include @@ -10,19 +10,29 @@ volatile bool bar_reachable = false; volatile bool bar_responded = false; void log_cb(meshlink_handle_t *mesh, meshlink_log_level_t level, const char *text) { - if(mesh) + if(mesh) { fprintf(stderr, "(%s) ", mesh->name); + } + fprintf(stderr, "[%d] %s\n", level, text); } void status_cb(meshlink_handle_t *mesh, meshlink_node_t *node, bool reachable) { - if(!strcmp(node->name, "bar")) + (void)mesh; + + if(!strcmp(node->name, "bar")) { bar_reachable = reachable; + } } void foo_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len) { - if(len == 5 && !memcmp(data, "Hello", 5)) + (void)mesh; + (void)channel; + (void)len; + + if(len == 5 && !memcmp(data, "Hello", 5)) { bar_responded = true; + } } void bar_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len) { @@ -31,28 +41,46 @@ void bar_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const } bool reject_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t port, const void *data, size_t len) { + (void)mesh; + (void)channel; + (void)port; + (void)data; + (void)len; + return false; } bool accept_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t port, const void *data, size_t len) { - if(port != 7) + if(port != 7) { return false; + } + meshlink_set_channel_receive_cb(mesh, channel, bar_receive_cb); - if(data) + + if(data) { bar_receive_cb(mesh, channel, data, len); + } + return true; } void poll_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, size_t len) { + (void)len; + meshlink_set_channel_poll_cb(mesh, channel, NULL); - if(meshlink_channel_send(mesh, channel, "Hello", 5) != 5) + + if(meshlink_channel_send(mesh, channel, "Hello", 5) != 5) { fprintf(stderr, "Could not send whole message\n"); + } } int main1(int rfd, int wfd) { + int ret_val; + (void)ret_val; meshlink_set_log_cb(NULL, MESHLINK_DEBUG, log_cb); - meshlink_handle_t *mesh1 = meshlink_open("channels_conf.1", "foo", "channels", DEV_CLASS_BACKBONE); + meshlink_handle_t *mesh1 = meshlink_open("channels_fork_conf.1", "foo", "channels", DEV_CLASS_BACKBONE); + if(!mesh1) { fprintf(stderr, "Could not initialize configuration for foo\n"); return 1; @@ -63,19 +91,20 @@ int main1(int rfd, int wfd) { meshlink_add_address(mesh1, "localhost"); char *data = meshlink_export(mesh1); + if(!data) { fprintf(stderr, "Foo could not export its configuration\n"); return 1; } size_t len = strlen(data); - write(wfd, &len, sizeof len); - write(wfd, data, len); + ret_val = write(wfd, &len, sizeof(len)); + ret_val = write(wfd, data, len); free(data); - read(rfd, &len, sizeof len); + ret_val = read(rfd, &len, sizeof(len)); char indata[len + 1]; - read(rfd, indata, len); + ret_val = read(rfd, indata, len); indata[len] = 0; fprintf(stderr, "Foo exchanged data\n"); @@ -92,8 +121,10 @@ int main1(int rfd, int wfd) { for(int i = 0; i < 20; i++) { sleep(1); - if(bar_reachable) + + if(bar_reachable) { break; + } } if(!bar_reachable) { @@ -104,6 +135,7 @@ int main1(int rfd, int wfd) { // Open a channel from foo to bar. meshlink_node_t *bar = meshlink_get_node(mesh1, "bar"); + if(!bar) { fprintf(stderr, "Foo could not find bar\n"); return 1; @@ -114,8 +146,10 @@ int main1(int rfd, int wfd) { for(int i = 0; i < 5; i++) { sleep(1); - if(bar_responded) + + if(bar_responded) { break; + } } if(!bar_responded) { @@ -134,11 +168,14 @@ int main1(int rfd, int wfd) { int main2(int rfd, int wfd) { + int ret_val; + (void)ret_val; sleep(1); meshlink_set_log_cb(NULL, MESHLINK_DEBUG, log_cb); - meshlink_handle_t *mesh2 = meshlink_open("channels_conf.2", "bar", "channels", DEV_CLASS_BACKBONE); + meshlink_handle_t *mesh2 = meshlink_open("channels_fork_conf.2", "bar", "channels", DEV_CLASS_BACKBONE); + if(!mesh2) { fprintf(stderr, "Could not initialize configuration for bar\n"); return 1; @@ -147,19 +184,27 @@ int main2(int rfd, int wfd) { meshlink_enable_discovery(mesh2, false); char *data = meshlink_export(mesh2); + if(!data) { fprintf(stderr, "Bar could not export its configuration\n"); return 1; } size_t len = strlen(data); - if(write(wfd, &len, sizeof len) <= 0) abort(); - if(write(wfd, data, len) <= 0) abort(); + + if(write(wfd, &len, sizeof(len)) <= 0) { + abort(); + } + + if(write(wfd, data, len) <= 0) { + abort(); + } + free(data); - read(rfd, &len, sizeof len); + ret_val = read(rfd, &len, sizeof(len)); char indata[len + 1]; - read(rfd, indata, len); + ret_val = read(rfd, indata, len); indata[len] = 0; fprintf(stderr, "Bar exchanged data\n"); @@ -183,14 +228,17 @@ int main2(int rfd, int wfd) { } -int main(int argc, char *argv[]) { - int fda[2], fdb[2], result; +int main() { + int ret_val; + (void)ret_val; + int fda[2], fdb[2]; - pipe2(fda, 0); - pipe2(fdb, 0); + ret_val = pipe2(fda, 0); + ret_val = pipe2(fdb, 0); - if(fork()) + if(fork()) { return main1(fda[0], fdb[1]); - else + } else { return main2(fdb[0], fda[1]); + } }