微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 GDBusProxy 仅根据 DBus 接口名称获取事件/信号?

如何解决如何使用 GDBusProxy 仅根据 DBus 接口名称获取事件/信号?

使用原始 dbus 库,可以在不指定发送者的情况下接收 DBUS 接口上的任何事件。 [完整示例][1]

dbus_bus_request_name(conn,"test.signal.sink",DBUS_NAME_FLAG_REPLACE_EXISTING,&err);
dbus_bus_add_match(conn,"type='signal',interface='test.signal.Type'",&err);
dbus_connection_flush(conn);
//and later just validate the names
dbus_message_is_signal(msg,"test.signal.Type","Test");

我找不到与 glib gdbus-codegen 类似的答案/示例。 您必须通过指向完整路径(应该是唯一的)将代理对象连接到远程 DBus 对象。

我的问题是实现信号接口的对象可能有很多名称未知。 也许我做错了什么?

事件监听器代码

dbus_platform_proxy_new_for_bus_sync(G_BUS_TYPE_SESSION,DBUS_EVENTER_PATH,DBUS_EVENTER_OBJ_NAME,NULL,&error);

事件端代码

busId = g_bus_own_name(G_BUS_TYPE_SESSION,G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT,on_name_acquired,NULL);

g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELetoN(dBusEventer),connection,DBUS_PLATFORM_EVENTER_OBJ_NAME,&error);

我再次想连接到接口而不使用侦听器端的 DBUS_EVENTER_PATH。 [1]:https://github.com/wware/stuff/blob/master/dbus-example/dbus-example.c

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。