Telepathy GLib is a library for connection managers. It aims to factor out code in common to GLib-based connection managers such as Gabble, Idle, Sofia-Sip and Salut.
[http://telepathy.freedesktop.org/releases/telepathy-glib/ Source code]
[http://darcs.collabora.co.uk/darcs/telepathy/telepathy-glib/ Darcs repository]
[http://telepathy.freedesktop.org/doc/telepathy-glib/ Comprehensive API documentation]
What's provided
TpBaseConnectionManager — a connection manager base class (implements Telepathy.ConnectionManager, you subclass it and specify a protocol and its arguments, and it will handle the listing/argument validation/connection object creation, etc)
TpBaseConnection — a connection base class (implements Telepathy.Connection, subclass it to teach it how to connect to the given protocol and which factories to make)
TpChannelFactoryIface — a channel factory interface (used by the connection to see if any factories can service an incoming channel request)
handle repositories (provide it with validation/normalisation functions, and off you go...): TpHandleRepoIface, TpDynamicHandleRepo, TpStaticHandleRepo
TpPropertiesMixin — a properties mixin
TpGroupMixin — a groups mixin
TpTextMixin — a text mixin - ported from Gabble
- error domain and enumeration
- debug and other shared utilities (util.*, handles.*)
Things to add
- a channel base class (implements Telepathy.Channel, you subclass it w/ mixins to implement certain channel types) - deferred for the moment
- client-side code, similar to (and obsoleting) libtelepathy - deferred for the moment since we have libtelepathy
Dependencies
Telepathy-GLib depends on the last release of the Glib bindings (0.72), since then implementing these mixins as interfaces & doing inheritance & adding in interfaces becomes a lot more practical. Telepathy-GLib looks for D-Bus glue data on all of the GInterfaces and superclasses a given object has, so we no longer have to produce one .xml file for e.g. GabbleConnection and the particular combination of interfaces it has.

