Application-Defined Peer-to-Peer Protocols Using XMPP

New Example Application

The org.eclipse.ecf.example.clients plugin has a new example client: XMPPSORobotApplication.
This application shows the use an XMPP's extension mechanism to implement new protocols that can run directly on XMPP.

This can be accomplished because the ECF XMPP provider (ecf.xmpp.smack) implements the ISharedObjectContainer API.
The ISharedObjectContainer API allows applications to design, implement, and use new protocols, by creating components implementing the
ISharedObject interface. These components
may then be added to an ISharedObjectContainer instance at runtime. So, for example,
consider the following snippet:

In the case of this example application, the ISharedObject component is implemented by the TrivialSharedObject class.
See the source code for this class to examine the implementation of the custom protocol. The source code for all ECF plugins is available via anonymous CVS access described on
the ECF Dev Resources Page.

Other ECF clients may define any point-to-point protocol they wish using similar mechanisms (implemented as ISharedObject instances like TrivialSharedObject), and this new protocol will then
run on XMPP without requiring modification to existing XMPP servers. Other XMPP clients (e.g. GAIM, Google Talk, etc.) that do not know about the new protocol will simply
ignore any messages directed sent to them.

Call API Additions/Changes

The ECF plugin org.eclipse.ecf.call is intended to provide an abstract 'Call' API, to allow clients to do call setup in a protocol independent
manner. The API is not finished yet (still experimental), but the ECF team is working on an implementation based upon Google Talk'sJingle protocol.
The new/enhanced API javadocs are here