0

我已经在多个 Ubuntu 系统中设置了 AllJoyn 堆栈(14.12),并在所有 Ubuntu 系统中启动了 ConsumerService。现在,当我在其中一个系统中启动 ProducerBasic 客户端时,通知会到达所有系统(预期行为)。

但是,如果我只想将它发送到 1 个系统,那怎么可能?

我正在尝试的场景是 - 我需要发送一个设备命令(比如重启设备)并且我不希望其他设备接收它。

我检查了 NotificationSender 的 API

NotificationSender::send(Notification const& notification, uint16_t ttl);

似乎没有任何其他方法可以发送数据。

感谢和问候
Amit M Mangalvedkar

4

2 回答 2

0

首先,我想说,您使用的是非常旧的 AllJoyn 库版本,我强烈建议您切换更新版本,例如(15.09 或 16.04)

Notification Service 是 AllJoyn 的一项公共服务,当您使用它时,它会向附近的所有 Peer 广播消息。

在您的情况下,您可以创建一个私有服务(换句话说,附加到 AllJoyn 总线的 BusObject)并使用 AllJoyn 中定义的事件/动作机制。您可以在文档中找到更多信息。https://allseenalliance.org/framework/documentation/develop/api-guide/events-and-actions

希望有帮助。

于 2016-03-16T15:01:05.847 回答
0

正如 Fatih 所说,通知服务将向所有对等点广播消息。您有以下选择。根据您的需要,我认为您不想使用通知服务。

由于您需要“重新启动”命令,因此您可能会考虑在需要重新启动的节点上支持配置服务。org.alljoyn.Config接口有一个为此目的的“重新启动”方法。它没有很好的文档记录,但它很简单。并且Android Java ConfigClient 有一个restart 方法可以在支持Config Service 的节点上调用。

要实现配置服务,您从抽象 ajn::services::ConfigService::Listener 类 (#include <alljoyn/config/ConfigService.h>) 派生一个类并实现虚函数。

另一种选择是在您自己的接口上创建您自己的 Reboot 方法并实现它,尽管我建议使用 ConfigService ,因为它已经存在并强制执行安全性。

于 2016-03-16T17:15:37.463 回答