问题标签 [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.

0 投票
1 回答
1005 浏览

c - g_dbus_proxy_new_for_bus_sync:断言“g_variant_is_object_path(object_path)”失败

以下代码应检索 DBusIdleSinceHint上公开的 systemd-logind 属性

但是当它运行时,它在断言g_assert (proxy != NULL);上失败并出现错误

可能是什么问题?谢谢

0 投票
1 回答
339 浏览

c - 该名称在 g_dbus_proxy_call_sync 上不可激活

在 GNOME Xorg 会话中,要获取 DBus 上公开的方法的返回值GetIdletime,您可以使用

或者

我需要使用 GDBus API 来检索这个值,所以我编写了以下代码

但是当我运行它时,我得到了错误GetIdletime failed: The name is not activable。怎么了?谢谢

0 投票
1 回答
195 浏览

c - dbus_connection_setup_with_g_main() 的 GDBus 等效项

我正在将代码从 dbus-glib 迁移到 GDBus,因为前者已被弃用。我无法在 GDBus 中找到 dbus_connection_setup_with_g_main() 的等效函数。 https://dbus.freedesktop.org/doc/dbus-glib/dbus-glib-DBus-GLib-low-level.html#dbus-connection-setup-with-g-main

有人可以指出我在 GDBus 中的等效功能或做类似工作的东西吗?

0 投票
1 回答
32 浏览

linux - 如何正确管理 g_dbus_interface_get_object() 返回的引用

我有一个应用程序,我在其中使用 UDisk 来处理一些驱动器和分区。在我的应用程序中,我有一个指向 a 的指针UDisksDrive,我需要将其转换为UDisksObject以后可以访问其他接口的指针。我不清楚我应该取消引用哪些对象以及何时取消引用。在一个功能中,我目前正在执行以下操作:

但我不知道这是否正确。它有效,但我知道这可能并不一定意味着什么。gdbus 文档的g_dbus_interface_get_object()读取就像我不应该driveObject在接收函数完成时取消引用返回的变量,但我不确定。我觉得我应该block在函数返回之前取消引用,但我不知道为什么我不这样做。这是一个我只有时间在这里和那里工作的项目,我觉得也许我已经尝试过了,但它导致了崩溃或异常。

我的大部分其他涉及 UDisk 的代码都非常简单。我_get_的东西,使用它,并取消引用它。正是这些涉及界面交换的东西,我有点模糊。

0 投票
1 回答
379 浏览

properties - sd_bus_get_property_string 等效于 gdbus?

我尝试用/读出systemd 单元ActiveState的属性。对于sd-bus有方便的功能。如果使用gdbus ,等效的调用会是什么。我知道该命令,但我需要在 C/C++ 中实现它。gdbusglib-2.0sd_bus_get_property_stringgdbus introspect

我已经设法启动和停止单位。现在我需要验证一个单元是否已成功启动/停止。我是 dbus 的新手,并且已经在互联网上搜索了几个小时的示例,但没有找到有用的东西。

0 投票
1 回答
117 浏览

c - 将 RequestInput 函数注册到 ConnMan 的正确方法是什么?

我正在实现 C 应用程序,它应该能够通过 GDbus 使用 ConnMan 连接到外部受 Wi-Fi 保护的接入点。到目前为止,我发现代理必须在“net.connman.Agent”接口上注册 RequestInput 回调,以便在连接到受保护的接入点期间提供密码。我正在像这样注册代理:

我还注册了如下界面:

其中 introspection_data 是从 XML 代码生成的,如下所示:

和 interface_vtable 定义如下:

目前我没有在我的处理程序方法中处理任何输入,只是想看看它被调用了。但是当我在受保护的服务(在“扫描”之后获得)上调用“连接”时,我得到了以下输出:

据我了解,这可能是 RequestInput 签名的问题,但我只看到“oa{sv}”用于输入,“a{sv}”用于通过不同文章/代码示例等提及的输出。

以前有没有人遇到过这样的错误?

任何建议和解决方案将不胜感激。

谢谢。

0 投票
1 回答
433 浏览

c - 如何正确编译和链接 gdbus 程序

我正在尝试在 Linux 上学习 dbus 和程序的编译/链接。我对从头开始构建和链接应用程序相当陌生。为此,我在 Ubuntu 上创建了一个简单的客户端+服务器应用程序,它通过 gdbus 进行通信。我正在使用 gdbus-codegen 工具为 dbus 接口生成 .c 和 .h 文件。我创建了一个名为 dbus_interface.xml 的示例 xml 描述文件:

我正在使用以下命令生成代码:

生成 generate_code.c 和 generated_code.h 文件。我已经在我的客户端应用程序中包含了 generated_code.h 头文件,我正在尝试使用以下命令使用 gcc 进行编译:

但是,我收到以下错误:

为什么我的系统上没有这个头文件?我在 /usr/include/glib-2.0/gio 中有 gio 目录,它包含一堆头文件 - 但不是 gunixfdlist.h。

作为旁注:

  1. 我不是故意在构建命令中使用 pkg-config 以便更好地理解 pkg-config 在编译期间扩展的内容
  2. 我想我必须将实际的库位置提供给链接器以及我的构建命令,但我想先解决没有正确解析包含的问题
0 投票
1 回答
84 浏览

c - 在没有总线守护程序的情况下联系我的 gdbus 服务器时出错

我正在尝试在 linux 系统上创建点对点 gdbus 通信。我使用 gdbus-codegen 工具生成可用于创建服务器的代码。我的服务器程序使用生成的骨架函数实例化一个对象,并通过 g_dbus_interface_skeleton_export 函数将其导出。以下是服务器接收到新连接时调用的服务器函数的概述:

编译并启动服务器后,我尝试使用 gdbus 工具联系它:

但是,我得到以下响应:

这里发生了什么?在创建点对点服务器时实际上是否可以使用生成的骨架函数,还是必须使用 g_dbus_connection_register_object 等较低级别的 API 调用?

0 投票
1 回答
667 浏览

c - D-Bus 返回 UnkownMethod - 表示路径上的对象上没有此类接口

我想编写一个简短的程序,它会递归地触发我网络共享上所有图片的缩略图创建(例如在夜间) - 这样当我访问 Thunar 中的文件夹时,缩略图会立即显示。

我想说,当我可以通过 访问 API 时gdbus call,系统设置正确:

但是当我调用我的二进制文件时,我收到以下错误:

代码如下。一般来说,我创建一个代理org.freedesktop.thumbnails.Thumbnailer1并调用GetSchedulers()

稍后我想调用该方法Queue()- 但为了测试 D-Bus 是否正常工作,我使用GetSchedulers().

0 投票
1 回答
239 浏览

signals - 方法调用中的 gdbus 信号块

我正在尝试在方法调用内的 dbus (g_dbus_connection_emit_signal) 上发送信号。我有一个使用 dbus 与服务器程序通信的客户端程序。当我在服务器端调用一个方法时,它会重定向到该方法函数,并且在执行该方法时,我正在发送信号。但是我在完成该方法后收到信号,那已经很晚了。

我不明白为什么会在 dbus 方法调用中发生这种情况。

问题是两个信号同时到达客户端,

在下面的代码中 -> _apply_ota() 是客户端调用的方法。

.