X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=listener.c;h=188cda8edcaa15b0a4dad9f8d2e02ace827c0012;hb=57615abd9b8c4d272e0e97ba1e9dec4bc3baf62f;hp=08b7c648564860cf2007e6895ad90ffc76d10eb6;hpb=dbd4c2f121be08e514828f2533687b145a6e16dd;p=project%2Fubus.git diff --git a/listener.c b/listener.c index 08b7c64..188cda8 100644 --- a/listener.c +++ b/listener.c @@ -1,28 +1,47 @@ #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_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); +static int test_hello(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) +{ + blob_buf_init(&b, 0); + blobmsg_add_string(&b, "message", "Hello, world!\n"); + 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)