获取消息发送者的“ dbus_request_name”设置的总线名称

时间:2020-11-12 15:07:19

标签: c dbus

出于调试目的,我想知道dbus消息的发件人名称。但是dbus_message_get_sender返回发件人的唯一名称,通常是这样的::1.60。我正在寻找一种获得dbus_request_name设置的名称的方法。

org.freedesktop.DBus界面提供了一种查询唯一名称的方法,该名称对应于名为GetNameOwner集合名称。但是我找不到相反的方法吗?


我想到的一种方法是使用ListNames方法获取所有注册名称的列表,然后使用GetNameOwner查询每个 name 的唯一名称,直到发生匹配。这应该可行,但我仍然认为应该有一种更简单的方法。

1 个答案:

答案 0 :(得分:1)

我想到的一种方法是使用ListNames方法获取所有注册名称的列表,然后使用GetNameOwner查询每个名称的唯一名称,直到发生匹配为止。这应该可行,但我仍然认为应该有一种更简单的方法。

那是实现您想要的正确方法。

org.freedesktop.DBus interface上没有方法可以从唯一名称(例如:1.5)映射到众所周知的名称(例如org.bluez),因为每个唯一名称可能是零个或更多个知名名称的所有者。

可以说有一个org.freedesktop.DBus.ListNamesForOwner()方法可以从唯一名称映射到知名名称的数组,但是至今还没有人写出来。