[Telepathy] Proposed Telepathy client GLib API
Luiz Augusto von Dentz
luiz.dentz at gmail.com
Tue Oct 16 12:31:42 PDT 2007
Hi Simon,
On 10/16/07, Simon McVittie <simon.mcvittie at collabora.co.uk> wrote:
> Goals:
> * All "boring" code auto-generated from the specification, like we do
> for services, to avoid mistakes while improving type-safety
> * Easier to use than libtelepathy
> * Clean, consistent API that does not expose implementation details, so
> it can be reimplemented in a more efficient way without ABI breakage
> * Easy synchronous and async calls, with async encouraged
I would add:
* Thread safe or multi-threaded.
> Non-goals:
> * Replacing dbus-glib
Not sure what you mean, but you simply cant just ignore its problems, or you
simple want to create another library after dbus-glib is deprecated?
>
> Here's what our plan for the API looks like:
>
> * TpClientProxy is a subclass of DBusGProxy with logic for fetching and
> caching a list of interfaces
>
> * TpChannel, TpConnection, TpConnectionManager are the main subclasses of
> TpClientProxy
>
> * TpMediaStreamHandler, TpMediaSessionHandler, TpChannelHandler are also
> TpClientProxy subclasses? or direct DBusGProxy subclasses?
>
> * Auto-generated method stubs similar to those in libtelepathy's *-gen.h in a
> tp_cli namespace, with naming similar to the tp_svc namespace, leading to
> names like tp_cli_connection_interface_avatars_get_avatar_requirements -
> instead of taking an interface DBusGProxy as the first argument, they
> will probably take the main proxy (TpConnection etc.) as the first argument
>
> * Hand-written convenience methods outside the tp_cli namespace added
> on an as-needed basis, e.g. tp_cli_connection_request_channel() will
> "return" an object path, but tp_connection_request_channel() will return
> a TpChannel. Some of these methods will cache data where it's known to
> be safe, listening to signals where necessary to keep the cache fresh.
> For instance, group membership can be tracked like that, and handle
> inspection can probably be cached.
>
> * Some sort of really cunning signal-connection process that I haven't quite
> planned out yet :-)
>
Well this really sound a lot like what we have in tapioca-glib, but I
would prefer
you provide some good library for mission control spec (if there is any to be
consider a standard).
Btw, TpaObject does have a mechanism to connect and auto-diconnects dbus
signals, perhaps you can have a TpClientObject so it handle common dbus code
or TpClientProxy may be able to do that for you.
> Meanwhile, Rob will continue to convert Stream Engine into library code, in
> the tp_media namespace. This will initially depend on libtelepathy, but
> when telepathy-glib has enough client code to support Stream Engine,
> it'll use telepathy-glib instead. This library will eventually be moved to
> the telepathy-glib Darcs repository (possibly in a telepathy-media-glib
> subdirectory); when it's API-stable, it'll produce
> libtelepathy-media-glib.so.0. We expect distributions to package
> the two libraries separately, e.g. Debian would ship binary packages
> libtelepathy-glib0 and libtelepathy-media-glib0, both built from a source
> package called telepathy-glib.
>
> The division between telepathy-glib and telepathy-media-glib is that
> telepathy-media-glib contains everything that requires Farsight. If
> Farsight is not available at build time, only telepathy-glib will be
> built. Obviously, distributions should build against Farsight.
Keep in mind that by stuffing media inside the library will turn it a
lot more complicated to use, can't we fix stream-engine to work
properly on desktop too?
Well as long it is optional Im ok with it...
There is a good documentation about tapioca API here:
http://tapioca-voip.sourceforge.net/docs/api/0.4.4/tapioca-api.html
But it was designed to work with telepathy itself so it is more
useful for mission control than application witch would probably
prefer talk directly to mission controls.
--
Luiz Augusto von Dentz
Engenheiro de Computação
More information about the Telepathy
mailing list