获取由消息发送者的“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”设置的总线名称的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 与消息

Posix消息队列

接收消息作为输入并从用户那里获取间隔值

在群聊中,新消息事件(websocket)应该由客户端发送还是API发送?

发送到JMS队列的消息将仅由单个消费者使用?

一文读懂RabbitMQ 消息队列