获取由消息发送者的“dbus_request_name”设置的总线名称
Posted
技术标签:
【中文标题】获取由消息发送者的“dbus_request_name”设置的总线名称【英文标题】:get bus name as set by "dbus_request_name" of a message sender 【发布时间】:2021-02-24 14:39:23 【问题描述】:出于调试目的,我想知道 dbus 消息的发件人名称。但是dbus_message_get_sender
返回发件人的唯一名称,通常是这样的::1.60
。我正在寻找一种方法来获取dbus_request_name
设置的名称。
org.freedesktop.DBus 接口提供了一个方法来查询 unique name 对应的 set name 被称为GetNameOwner
。但是我找不到相反的方法?
我想到的一种方法是使用ListNames
方法获取所有已注册名称的列表,然后使用GetNameOwner
查询每个name 的唯一名称,直到发生匹配。这应该可行,但我仍然认为应该有一种更简单的方法。
【问题讨论】:
【参考方案1】:我想到的一种方法是使用 ListNames 方法获取所有已注册名称的列表,然后使用 GetNameOwner 查询每个名称的唯一名称,直到发生匹配。这应该可行,但我仍然认为应该有一种更简单的方法。
这是实现你想要的正确方法。
org.freedesktop.DBus
interface 上没有将唯一名称(例如,:1.5
)映射到知名名称(例如,org.bluez
)的方法,因为每个唯一名称都可能是零个或多个知名名称。
可以说可能有一个org.freedesktop.DBus.ListNamesForOwner()
方法可以从一个唯一的名称映射到一个由知名名称组成的数组,但还没有人写过。
【讨论】:
以上是关于获取由消息发送者的“dbus_request_name”设置的总线名称的主要内容,如果未能解决你的问题,请参考以下文章