From: Felix Fietkau Date: Sun, 6 Feb 2011 01:15:10 +0000 (+0100) Subject: rename listener to ubus-example X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=4534209ea81e73b76acdc48187c8f4d7074d95ce;p=oweals%2Fubus.git rename listener to ubus-example --- diff --git a/.gitignore b/.gitignore index eb8eb29..97b344b 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ CMakeFiles *.so *.dylib ubus.sock -listener +ubus-example ubusd ubus install_manifest.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 10b792b..504b65e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,8 +18,8 @@ ADD_EXECUTABLE(cli cli.c) SET_TARGET_PROPERTIES(cli PROPERTIES OUTPUT_NAME ubus) TARGET_LINK_LIBRARIES(cli ubus ubox json) -ADD_EXECUTABLE(listener listener.c) -TARGET_LINK_LIBRARIES(listener ubus ubox) +ADD_EXECUTABLE(ubus-example ubus-example.c) +TARGET_LINK_LIBRARIES(ubus-example ubus ubox) SET(CMAKE_INSTALL_PREFIX /usr) diff --git a/listener.c b/listener.c deleted file mode 100644 index d2e2288..0000000 --- a/listener.c +++ /dev/null @@ -1,104 +0,0 @@ -#include "libubus.h" - -static struct ubus_context *ctx; -struct blob_buf b; - -static const struct ubus_signature test_object_sig[] = { - UBUS_METHOD_START("hello"), - UBUS_ARRAY("test"), - UBUS_TABLE_START(NULL), - UBUS_FIELD(INT32, "id"), - UBUS_FIELD(STRING, "msg"), - UBUS_TABLE_END(), - UBUS_METHOD_END(), -}; - -static struct ubus_object_type test_object_type = - UBUS_OBJECT_TYPE("test", test_object_sig); - -enum { - HELLO_ID, - HELLO_MSG, - HELLO_LAST -}; - -static const struct blobmsg_policy hello_policy[] = { - [HELLO_ID] = { .name = "id", .type = BLOBMSG_TYPE_INT32 }, - [HELLO_MSG] = { .name = "msg", .type = BLOBMSG_TYPE_STRING }, -}; - -static int test_hello(struct ubus_context *ctx, struct ubus_object *obj, - struct ubus_request_data *req, const char *method, - struct blob_attr *msg) -{ - struct blob_attr *tb[HELLO_LAST]; - char *msgstr = "(unknown)"; - char *strbuf; - - blobmsg_parse(hello_policy, ARRAY_SIZE(hello_policy), tb, blob_data(msg), blob_len(msg)); - - if (tb[HELLO_MSG]) - msgstr = blobmsg_data(tb[HELLO_MSG]); - - blob_buf_init(&b, 0); - strbuf = blobmsg_alloc_string_buffer(&b, "message", 64 + strlen(obj->name) + strlen(msgstr)); - sprintf(strbuf, "%s: Hello, world: %s", obj->name, msgstr); - blobmsg_add_string_buffer(&b); - ubus_send_reply(ctx, req, b.head); - return 0; -} - -static const struct ubus_method test_methods[] = { - { .name = "hello", .handler = test_hello }, -}; - -static struct ubus_object test_object = { - .name = "test", - .type = &test_object_type, - .methods = test_methods, - .n_methods = ARRAY_SIZE(test_methods), -}; - -static struct ubus_object test_object2 = { - .name = "test2", - .type = &test_object_type, - .methods = test_methods, - .n_methods = ARRAY_SIZE(test_methods), -}; - -int main(int argc, char **argv) -{ - int ret; - - ctx = ubus_connect(NULL); - if (!ctx) { - fprintf(stderr, "Failed to connect to ubus\n"); - return -1; - } - - fprintf(stderr, "Connected as ID 0x%08x\n", ctx->local_id); - - fprintf(stderr, "Publishing object\n"); - ret = ubus_publish(ctx, &test_object); - if (ret) - fprintf(stderr, "Failed to publish object: %s\n", ubus_strerror(ret)); - else { - fprintf(stderr, "Object ID: %08x\n", test_object.id); - fprintf(stderr, "Object Type ID: %08x\n", test_object.type->id); - } - - fprintf(stderr, "Publishing object\n"); - ret = ubus_publish(ctx, &test_object2); - if (ret) - fprintf(stderr, "Failed to publish object: %s\n", ubus_strerror(ret)); - else { - fprintf(stderr, "Object ID: %08x\n", test_object2.id); - fprintf(stderr, "Object Type ID: %08x\n", test_object2.type->id); - } - uloop_init(); - ubus_add_uloop(ctx); - uloop_run(); - - ubus_free(ctx); - return 0; -} diff --git a/ubus-example.c b/ubus-example.c new file mode 100644 index 0000000..d2e2288 --- /dev/null +++ b/ubus-example.c @@ -0,0 +1,104 @@ +#include "libubus.h" + +static struct ubus_context *ctx; +struct blob_buf b; + +static const struct ubus_signature test_object_sig[] = { + UBUS_METHOD_START("hello"), + UBUS_ARRAY("test"), + UBUS_TABLE_START(NULL), + UBUS_FIELD(INT32, "id"), + UBUS_FIELD(STRING, "msg"), + UBUS_TABLE_END(), + UBUS_METHOD_END(), +}; + +static struct ubus_object_type test_object_type = + UBUS_OBJECT_TYPE("test", test_object_sig); + +enum { + HELLO_ID, + HELLO_MSG, + HELLO_LAST +}; + +static const struct blobmsg_policy hello_policy[] = { + [HELLO_ID] = { .name = "id", .type = BLOBMSG_TYPE_INT32 }, + [HELLO_MSG] = { .name = "msg", .type = BLOBMSG_TYPE_STRING }, +}; + +static int test_hello(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) +{ + struct blob_attr *tb[HELLO_LAST]; + char *msgstr = "(unknown)"; + char *strbuf; + + blobmsg_parse(hello_policy, ARRAY_SIZE(hello_policy), tb, blob_data(msg), blob_len(msg)); + + if (tb[HELLO_MSG]) + msgstr = blobmsg_data(tb[HELLO_MSG]); + + blob_buf_init(&b, 0); + strbuf = blobmsg_alloc_string_buffer(&b, "message", 64 + strlen(obj->name) + strlen(msgstr)); + sprintf(strbuf, "%s: Hello, world: %s", obj->name, msgstr); + blobmsg_add_string_buffer(&b); + ubus_send_reply(ctx, req, b.head); + return 0; +} + +static const struct ubus_method test_methods[] = { + { .name = "hello", .handler = test_hello }, +}; + +static struct ubus_object test_object = { + .name = "test", + .type = &test_object_type, + .methods = test_methods, + .n_methods = ARRAY_SIZE(test_methods), +}; + +static struct ubus_object test_object2 = { + .name = "test2", + .type = &test_object_type, + .methods = test_methods, + .n_methods = ARRAY_SIZE(test_methods), +}; + +int main(int argc, char **argv) +{ + int ret; + + ctx = ubus_connect(NULL); + if (!ctx) { + fprintf(stderr, "Failed to connect to ubus\n"); + return -1; + } + + fprintf(stderr, "Connected as ID 0x%08x\n", ctx->local_id); + + fprintf(stderr, "Publishing object\n"); + ret = ubus_publish(ctx, &test_object); + if (ret) + fprintf(stderr, "Failed to publish object: %s\n", ubus_strerror(ret)); + else { + fprintf(stderr, "Object ID: %08x\n", test_object.id); + fprintf(stderr, "Object Type ID: %08x\n", test_object.type->id); + } + + fprintf(stderr, "Publishing object\n"); + ret = ubus_publish(ctx, &test_object2); + if (ret) + fprintf(stderr, "Failed to publish object: %s\n", ubus_strerror(ret)); + else { + fprintf(stderr, "Object ID: %08x\n", test_object2.id); + fprintf(stderr, "Object Type ID: %08x\n", test_object2.type->id); + } + uloop_init(); + ubus_add_uloop(ctx); + uloop_run(); + + ubus_free(ctx); + return 0; +}