如何使用 qt-dbus 将错误返回到 dbus?

Posted

技术标签:

【中文标题】如何使用 qt-dbus 将错误返回到 dbus?【英文标题】:How to return error to dbus using qt-dbus? 【发布时间】:2012-11-29 03:42:20 【问题描述】:

我正在使用 qt-dbus 从我的软件中公开一些 API。

我将带有接口声明的 foo.xml 转换为 foo_adaptor.cpp 和 foo_adaptor.h 通过 qdbusxml2cpp 持有 FooAdaptor 类,然后我通过在 Foo 的构造函数中调用 new FooAdaptor(this) 将真正的 Foo 类绑定到 FooAdaptor。

所以,它起作用了:当我通过 dbus-send 向我的应用发送消息时,调用了 Foo 方法。

对于我的软件的特定版本,我想禁用一些方法。 我需要以某种方式通知调用者,某些方法调用实际上是不允许的并且什么都不做/没有意义。 是否有任何函数可以调用/抛出异常来执行此操作?

【问题讨论】:

【参考方案1】:

可以通过使您的 D-Bus 对象(使用 QDBusConnection::registerObject() 注册的对象,而不是适配器)继承自 QDBusContext,然后使用 sendErrorReply() 方法来发送错误响应:

http://qt-project.org/doc/qt-5.1/qtdbus/qdbuscontext.html

【讨论】:

以上是关于如何使用 qt-dbus 将错误返回到 dbus?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C 编程从 dbus 传递/返回结构?

如何根据 dbus-monitor 输出中的错误确定 SELinux 规则

如何将 X11 应用程序附加到 Dbus

如何从 Python 将无符号值发送到 dBus

如何在 Qt DBus 调用中从 QDBusMessage 中提取返回的数据?

Emacs:尝试切换到乳胶模式时出现与 dbus 相关的错误