出于调试目的,我想知道dbus消息的发件人名称。但是dbus_message_get_sender
返回发件人的唯一名称,通常是这样的::1.60
。我正在寻找一种获得dbus_request_name
设置的名称的方法。
org.freedesktop.DBus界面提供了一种查询唯一名称的方法,该名称对应于名为GetNameOwner
的集合名称。但是我找不到相反的方法吗?
我想到的一种方法是使用ListNames
方法获取所有注册名称的列表,然后使用GetNameOwner
查询每个 name 的唯一名称,直到发生匹配。这应该可行,但我仍然认为应该有一种更简单的方法。
答案 0 :(得分:1)
我想到的一种方法是使用ListNames方法获取所有注册名称的列表,然后使用GetNameOwner查询每个名称的唯一名称,直到发生匹配为止。这应该可行,但我仍然认为应该有一种更简单的方法。
那是实现您想要的正确方法。
org.freedesktop.DBus
interface上没有方法可以从唯一名称(例如:1.5
)映射到众所周知的名称(例如org.bluez
),因为每个唯一名称可能是零个或更多个知名名称的所有者。
可以说有一个org.freedesktop.DBus.ListNamesForOwner()
方法可以从唯一名称映射到知名名称的数组,但是至今还没有人写出来。