diff options
author | Felix Fietkau <nbd@openwrt.org> | 2012-10-01 15:03:26 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2012-10-24 14:37:57 +0200 |
commit | fc913a077d84ab0d23414a7124c7a127cb526122 (patch) | |
tree | a1c73a9f54d9e59814caea1a89a4f29f06368936 /examples/client.c | |
parent | 57d1599c1add00bce8824b5e52392f007ed1ed82 (diff) | |
download | ubus-fc913a077d84ab0d23414a7124c7a127cb526122.tar.gz |
examples: split client/server code
Diffstat (limited to 'examples/client.c')
-rw-r--r-- | examples/client.c | 79 |
1 files changed, 79 insertions, 0 deletions
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 <nbd@openwrt.org> + * + * 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 <unistd.h> + +#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; +} |