Sessionless signals and About

asked 2014-09-26 03:40:10 -0700

PierreR gravatar image

There's something that puzzles me on the way About and the sessionless signals work :

The AboutServer uses sessionsless signals to announce metadata about an Alljoyn application. This announce signal is only 'sent' on startup and when adding / removing a bus object, yet an AboutClient that comes after the announcing application still see the announcement.

As far as I understand, that means :

  • that sessionless signal are not really sent but also somehow cached (probably for the duration of the TTL, and on the emitting side) so that late joiners can still receive them.
  • that the actual discovery of the alljoyn node is not made with about but with other mecanisms in the core (mdns / NGNS / findAdvertiseName) and that an alljoyn node fetches existing sessionless signals on any nodes it discovers.

Is that correct ?

Now in the docs, I read :

Each sessionless signal will replace the previous one. If the receiving side has not had a chance to pull the data, it will be lost and not transmitted to the other side.

Does that mean that any sessionless signal my application emits will replace the annouce signal, and thus make my application non-discoverable (unless and until I manually call annouce again) ?

I've some stanges issues with applications that stop being visible with About and I cannot figure out the exact condition that makes this happens. Any information about the underlying mecanism and especially sessionless signals (documention is really missing here) would be appreciated !


edit retag flag offensive close merge delete

1 answer

Sort by » oldest newest most voted

answered 2014-09-30 09:55:43 -0700

You are correct in both your points:

  • the sessionless signal is cached for the duration of the TTL by the router on the emitting side, and
  • the discovery by the signal receiver uses the underlying mDNS mechanism to locate emitters.

The receiver only fetches sessionless signals from those emitters who are advertising that they are emitting a sessionless signal from an interface the receiver is interested in. For About, the receiver is interested in sessionless signals from the org.alljoyn.About interface, and the emitter advertises that it is emitting a sessionless signal from the org.alljoyn.About interface, so the receiver will fetch the signals from the emitter.

In regards to the replacement rule:

The key used on the router to cache the sessionless signal is (sender, object path, interface, member). Sender is your application, object path is the object emitting the signal in your application, and interface and member are the name of the interface and signal that is being emitted.

So any signal emitted by your app with the same key above will replace the cached signal in the router.

edit flag offensive delete publish link more
Login/Signup to Answer

Question Tools

1 follower


Asked: 2014-09-26 03:40:10 -0700

Seen: 274 times

Last updated: Sep 30 '14