ubus listen
使用方式
ubus 提供event listen功能,測試如下
先帶起ubus listen
若沒有帶listen的event參數,則全部的event都會收進來
ubus listen event_a
client端送出even_a及參數
ubus send event_a '{"layout":"9x9"}'此時server將會收到event_a的訊息
其它的event訊息將會被省略 (ex. ubus send event_b xx)
~ # ubus listen event_a
{ "event_a": {"layout":"9x9"} }一次listen多個event
ubus
listen後面可帶多個event
~ # ubus listen event_b event_c
{ "event_b": {"layout":"2x2"} }
{ "event_c": {"layout":"3x3"} }client
ubus send event_a '{"layout":"1x1"}'
ubus send event_b '{"layout":"2x2"}'
ubus send event_c '{"layout":"3x3"}'ubus listen 實現
由ubus_socket(/var/run/ubus.sock)取得ubusd的ctx
ubus_add_object將目前需要加入ctx裡面
uloop_run: 開始listen fd及等待timeout, 執行callback function
ubus listen

ubus register event handler

需設定ubus_event_handler內的cb
這邊是設定為receive_event
struct ubus_event_handler {
struct ubus_object obj;
ubus_event_handler_t cb;
};receive_event
直接打印取得訊息
static void receive_event(struct ubus_context *ctx, struct ubus_event_handler *ev,
const char *type, struct blob_attr *msg)
{
char *str;
str = blobmsg_format_json(msg, true);
printf("{ \"%s\": %s }\n", type, str);
fflush(stdout);
free(str);
}ubus send 實現
ubus send

ubus_send_event

本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。









