问题标签 [gdbus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 如何通过 gdbus 发送 Dictionary 数据类型(a{ias})?
我试图使用 gdbus 通过 dbus 发送不同的数据类型。我被困在发送以下数据类型:a{ias}
. 有没有人给我发一个片段或任何方法来解决这个问题?
dbus - gdbus introspect 与 --recurse 和 --xml 选项一起不递归
我想用 --recurse 递归地探索一个接口
使用 --xml 选项将结果添加为 XML
然而,两者一起只提供顶级接口作为 XML
最终目标是在 java-dbus 中将此文件与 CreateInterface 一起使用来创建我的类文件。(它的对象路径文件生成没有递归选项。)
有没有一种递归生成 dbus 自省 XMLfile 的方法?我在 Redhat 7 顺便说一句。
python-3.x - 在 Python 3 中从 dbus 迁移到 GDbus
我曾尝试使用 GDbus 在 python 中编写服务文件。但是我找不到一个好的教程,只有当我想使用 C 时。因为我想在现有的 Python 代码中包含 GDbus,所以我不知道该怎么做。
我可以使用 dbus 编写服务文件,并且可以使用 GDbus 客户端访问该服务文件。
如果有人在 Python 中有一个很好的例子,我会很高兴。非常感谢,多米尼克
c - 什么 gdbus 函数返回子对象节点列表?
我能够自省 DBus 节点,并获得一些 XML,其中包含有关子节点的信息。但是,这需要我解析 XML,并且我试图保持应用程序的轻量级。我可以使用什么 gdbus 函数来简单地获取子节点对象名称的列表?
这是获取 XML 的代码。
所以上面的代码有效。在返回的 XML 的深处,有一些元素描述了 org.bluez 对象节点的子节点。就我而言,有一个元素是这样的:
但是,我不想解析 XML 来找到它。还有哪些其他 gdbus 函数可用于简单地检索 org.bluez 的子项的名称,而不需要 XML 解析器?
c - 如何让 g_dbus_connection_signal_subscribe 函数告诉我预先存在的对象/接口?
函数 g_dbus_connection_signal_subscribe 非常适合告诉我新的 DBus 对象何时出现(或消失)并带有 InterfacesAdded 信号(或 InterfacesRemoved 信号)。但我需要了解预先存在的对象/接口。
我编写了以下一段 C 代码以在从总线添加/删除 DBus 对象时提供回调。为简单起见省略了错误检查。
所以我要做的是跟踪树的 org.bluez 分支下存在的所有 DBus 对象。(这些代表可插拔蓝牙控制器和每个控制器发现的设备)。我需要了解在我的程序启动之前已经存在的 DBus 对象,并且我需要了解在我的程序启动后出现的新对象。
我上面的代码告诉我新对象,但没有告诉我已经存在的对象。gdbus API 中有没有办法为已经存在的对象获取“InterfacesCreated”信号?我想可以读取整个 DBus 对象层次结构然后订阅更改,但这会导致竞争条件,如果一个对象出现在我读取对象层次结构和订阅时间之间,那么我会错过这些对象......
使用 gdbus API 完成此任务的最佳实践方法是什么?
python-3.x - Pydbus中不同数量的参数
我现在设置了一个 Pydbus 服务器并导出了一些方法,但一种方法让我一直在猜测。此方法中使用的参数数量正在发生变化。在 Python 中,这只需使用 MyMethod(*arg, **kwarg) 即可完成。如果我将此函数写入我的 XML 接口,我必须定义参数的确切数量。
有没有办法不指定参数的确切数量?这样我理论上可以在第一次使用时使用一个参数,第二次使用无限参数?
谢谢你的帮助,多米尼克
glib - 代理处理程序上的 g_signal_connect 导致回调 GVariant * 数据未初始化
为了在 dbus 上设置 Connman 信号回调,我非常关注https://www.freedesktop.org/software/gstreamer-sdk/data/docs/latest/gio/GDBusProxy.html上的示例,但是在我的回调函数:
我被告知 GVariant * 对象包含的孩子的数量是完全错误的。例如,我的反馈:
on_manager_properties_changed 孩子:139764141513856 on_manager_properties_changed 孩子:145
这两个值都超出了范围,一个比另一个更重要。更重要的是,如果我尝试从 GVariant 对象中解析出值,即使只是尝试调用 g_variant_get_type_string,我最终也会出现段错误。为什么我的回调返回一个垃圾数据指针?似乎如果它什么都没有,它至少应该返回一个空指针。
编辑:源代码 https://drive.google.com/file/d/1E0Kg9JKW54gghUHbVyBJ0ysBIdqBlpVA/view?usp=sharing
还有一些 dbus-monitor --system 输出:
glib - 使用 GDBus 发射 D-Bus 信号而不拥有知名名称
我想使用 dbus 向同一系列应用程序的其他实例发出信号。似乎要发出信号,我必须执行 a g_bus_own_name
,在获取名称时发出信号,然后g_bus_unown_name
. 这似乎只是为了发送信号。获取名称后,应用程序的另一个实例将挂起,等待该实例“不拥有”该名称。
dbus_message_new_signal
/的弃用方式dbus_connection_send
更加直接。
有没有更简单的方法来发送信号(不拥有名称)。
dbus - 网络管理器 Dbus 代码“aa{ss}”的含义
我正在编写一个脚本来通过 dbus 对 NetworkManager 进行 IO。在gnome 开发人员文档中,函数参数表示为类似的东西,'aa{ss}'
但我找不到那里含义的描述。
x11 - 如何在没有桌面环境的 CentOS 中使用 dbus
我的系统是没有gui的centos。我有一个服务器应用程序,它“监听”会话中的方法调用dbus
。它显然工作正常。我已经安装好了pydbus
,python3-gobject
我也有dbus-launch
工作。这是服务器应用程序:
现在为了调用该服务器方法,从另一个终端(同一个用户)我尝试使用我的客户端应用程序,但失败了,然后我尝试gdbus
了失败的应用程序,错误如下:
从另一台具有桌面环境的机器上一切正常。我四处搜寻,但找不到在那种情况下使用 dbus 的方法。任何人都可以帮忙吗?