Revision history [back]

click to hide/show revision 1
initial version

Release 14.06 has added support for a Presence API, precisely for the purpose of finding the status of the remote application. The best course of action is to upgrade all applications to AllJoyn 14.06 or newer, if feasible.

Having said that, there are a couple of ways in which one can check the status of the remote application in 14.02 as well.

One reliable option is to use ajn::BusAttachment::SetLinkTimeout(SessionId sessionid, uint32_t& linkTimeout). After forming a session with the remote application, set a link timeout on the session. This causes periodic heartbeat messages to be exchanged between routing nodes and one can detect that the remote application has gone away (i.e. zombie as you termed) in 40 seconds (instead of lag over 5+ minutes).

A second option is to invoke CancelFindAdvertisedName on the local application, followed by invoking FindAdvertisedName for a name expected to be advertised by the remote application. When a fresh FindAdvertisedName query is issued and no FoundAdvertisedName was received with a certain timeout of your choice, you can consider the remote application to be a zombie. Because UDP multicast is involved in Discovery, this option is slightly less reliable than the previous option involving sessions (which are done over a reliable transport).