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
本文章由作者:佐须之男 整理编辑,原文地址: 了解ubus listen用法
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。