我在多个Ubuntu系统中设置了AllJoyn堆栈(14.12),并在所有Ubuntu系统中启动了ConsumerService。现在当我启动ProducerBasic客户端时,在其中一个系统中,通知到达所有系统(预期的行为)。
但是,如果我想将它发送到只有一个系统,那怎么可行呢?
我正在尝试的方案是 - 我需要发送一个设备命令(比如重启设备),我不希望其他设备接收它。
我检查了NotificationSender的API
NotificationSender::send(Notification const& notification, uint16_t ttl);
似乎没有任何其他方法可以发送数据。
谢谢和问候 Amit M Mangalvedkar
答案 0 :(得分:0)
首先,我想说,您使用的是AllJoyn库的旧版本,我强烈建议您切换更新版本,如(15.09或16.04)
Notification Service是AllJoyn的公共服务,当您使用它时,它会向所有附近的同行广播消息。
在您的情况下,您可以创建私有服务(换句话说,连接到AllJoyn总线的BusObject)并使用AllJoyn中定义的事件/操作机制。您可以在文档中找到更多信息。 https://allseenalliance.org/framework/documentation/develop/api-guide/events-and-actions
希望有所帮助。
答案 1 :(得分:0)
正如法提赫所说,通知服务将向所有同行广播消息。您有以下选择。根据您的需要,我认为您不想使用通知服务。
由于您需要“重新启动”命令,因此可以考虑在需要重新启动的节点上支持配置服务。 org.alljoyn.Config interface具有用于此目的的“重新启动”方法。它没有详细记录,但它很简单。并Android Java ConfigClient has a restart method调用支持配置服务的节点。
要实现Config Service,您需要从抽象的ajn :: services :: ConfigService :: Listener类(#include< alljoyn / config / ConfigService.h>)派生一个类,并实现虚函数。
另一种选择是在你自己的界面上创建你自己的Reboot方法并实现它,虽然我建议使用ConfigService,因为它已经存在并强制执行安全性。