From fc913a077d84ab0d23414a7124c7a127cb526122 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 1 Oct 2012 15:03:26 +0200 Subject: [PATCH 1/1] examples: split client/server code --- .gitignore | 3 +- examples/CMakeLists.txt | 8 +++- examples/client.c | 79 +++++++++++++++++++++++++++++++++++ examples/{ubus-example.c => server.c} | 37 +--------------- 4 files changed, 88 insertions(+), 39 deletions(-) create mode 100644 examples/client.c rename examples/{ubus-example.c => server.c} (84%) diff --git a/.gitignore b/.gitignore index 6eca9d9..551b024 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,8 @@ CMakeFiles *.a *.so *.dylib -ubus-example +examples/server +examples/client ubusd ubus install_manifest.txt diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 59ba6ab..a6ab7bf 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,6 +1,10 @@ cmake_minimum_required(VERSION 2.6) ADD_DEFINITIONS(-I..) -ADD_EXECUTABLE(ubus-example ubus-example.c) -TARGET_LINK_LIBRARIES(ubus-example ubus ubox) + +ADD_EXECUTABLE(server server.c) +TARGET_LINK_LIBRARIES(server ubus ubox) + +ADD_EXECUTABLE(client client.c) +TARGET_LINK_LIBRARIES(client ubus ubox) diff --git a/examples/client.c b/examples/client.c new file mode 100644 index 0000000..315a8e3 --- /dev/null +++ b/examples/client.c @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2011 Felix Fietkau + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2.1 + * as published by the Free Software Foundation + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include + +#include "libubus.h" + +static struct ubus_context *ctx; +static struct blob_buf b; + +static struct ubus_object test_client_object = {}; + +static void client_main(void) +{ + uint32_t id; + int ret; + + ret = ubus_add_object(ctx, &test_client_object); + if (ret) { + fprintf(stderr, "Failed to add_object object: %s\n", ubus_strerror(ret)); + return; + } + + if (ubus_lookup_id(ctx, "test", &id)) { + fprintf(stderr, "Failed to look up test object\n"); + return; + } + + blob_buf_init(&b, 0); + blobmsg_add_u32(&b, "id", test_client_object.id); + ubus_invoke(ctx, id, "watch", b.head, NULL, 0, 3000); + uloop_run(); +} + +int main(int argc, char **argv) +{ + const char *ubus_socket = NULL; + int ch; + + while ((ch = getopt(argc, argv, "cs:")) != -1) { + switch (ch) { + case 's': + ubus_socket = optarg; + break; + default: + break; + } + } + + argc -= optind; + argv += optind; + + uloop_init(); + + ctx = ubus_connect(ubus_socket); + if (!ctx) { + fprintf(stderr, "Failed to connect to ubus\n"); + return -1; + } + + ubus_add_uloop(ctx); + + client_main(); + + ubus_free(ctx); + uloop_done(); + + return 0; +} diff --git a/examples/ubus-example.c b/examples/server.c similarity index 84% rename from examples/ubus-example.c rename to examples/server.c index a7df06f..97789d5 100644 --- a/examples/ubus-example.c +++ b/examples/server.c @@ -117,12 +117,6 @@ static struct ubus_object test_object = { .n_methods = ARRAY_SIZE(test_methods), }; -static struct ubus_object test_client_object = { - .type = &test_object_type, - .methods = test_methods, - .n_methods = ARRAY_SIZE(test_methods), -}; - static void server_main(void) { int ret; @@ -138,32 +132,9 @@ static void server_main(void) uloop_run(); } -static void client_main(void) -{ - uint32_t id; - int ret; - - ret = ubus_add_object(ctx, &test_client_object); - if (ret) { - fprintf(stderr, "Failed to add_object object: %s\n", ubus_strerror(ret)); - return; - } - - if (ubus_lookup_id(ctx, test_object.name, &id)) { - fprintf(stderr, "Failed to look up test object\n"); - return; - } - - blob_buf_init(&b, 0); - blobmsg_add_u32(&b, "id", test_client_object.id); - ubus_invoke(ctx, id, "watch", b.head, NULL, 0, 3000); - uloop_run(); -} - int main(int argc, char **argv) { const char *ubus_socket = NULL; - bool client = false; int ch; while ((ch = getopt(argc, argv, "cs:")) != -1) { @@ -171,9 +142,6 @@ int main(int argc, char **argv) case 's': ubus_socket = optarg; break; - case 'c': - client = true; - break; default: break; } @@ -192,10 +160,7 @@ int main(int argc, char **argv) ubus_add_uloop(ctx); - if (client) - client_main(); - else - server_main(); + server_main(); ubus_free(ctx); uloop_done(); -- 2.11.0