Livespaces
Elvin

Elvin is a general-purpose event notification routing system. Clients connect to an Elvin router service and may subscribe to events and/or generate events. An Elvin event is simply a set of name/value pairs such as [Name="foobar", Age=42].

Clients use subscription expressions to select events of interest. An example subscription expression that matches the example above would be simply Name == "foobar". Another would be Age > 40. The specification for the Elvin subscription language can be found here.

The flexibility of Elvin events and the programmability of the router via subscription expressions make it ideal for building bus-style publish-subscribe systems such as the Livespace Bus underlying a Livespace room. The Elvin model allows clients to move one step up from point-to-point network communications and custom protocols, and treat the network as an extensible publish/subscribe space.

Licensing And Support

DSTO's support agreement with Mantara for their commercial Elvin router and development libraries ended in Nov 2007. As of release 1.2, Livespaces is based on the open source Avis router and client library and has no depedencies on Mantara IP.

Federation

For information on federating Avis and/or Livespaces, see the Federation page.

Federation (old Mantara Elvin instructions)

Add the following lines to elvid.conf in the Elvin install area to have the router listen for incoming federation connections.

federation yes
federation.protocol ewaf://0.0.0.0:2916

federation.class livespace
federation.subscribe livespace \
         (string (TICKERTAPE) && string (TICKERTEXT) && string (USER)) \
      || (string (NEWSGROUPS) && string (FROM_NAME) && string (SUBJECT)) \
      || (string (Group) && string (Message) && string (From)) \
      || (int32 (Presence-Protocol) || int64 (Presence-Protocol)) \
      || (int32 (Livespace-Protocol) && Entity-Type != "room")
federation.provide livespace \
         (string (TICKERTAPE) && string (TICKERTEXT) && string (USER)) \
      || (string (NEWSGROUPS) && string (FROM_NAME) && string (SUBJECT)) \
      || (string (Group) && string (Message) && string (From)) \
      || (int32 (Presence-Protocol) || int64 (Presence-Protocol)) \
      || (int32 (Livespace-Protocol) && Entity-Type != "room")

The "master" router has the same lines, and initiates the link by adding lines such as:

federation.link livespace ewaf://SLAVE1:2916
federation.link livespace ewaf://SLAVE2:2916

category: Documentation, Public