[Telepathy] MC5 and my GSoC project for Banshee

Neil Loknath neil.loknath at gmail.com
Mon Jun 22 10:41:52 PDT 2009

> On Sun, 21 Jun 2009 at 22:14:18 -0600, Neil Loknath wrote:
> > So, what disadvantages are there to sticking with the Requests and
> > ContactCapabilities interfaces instead of using the new MC5 things?
> The problem is that you won't interact correctly with other clients:
> * SetSelfCapabilities, as you noticed, needs to be handled by one process (MC)
>  to work properly
> * If you don't tell MC 5 that you're willing to handle a certain type of tube,
>  it will decide the tube can't be handled, and close it as undispatchable

So, you're saying that if MC5 is not told, the Requests.NewChannels
signal will not be raised when Requests.CreateChannel is called? If
that is the case, will the Requests interface be hidden from public

> * If another client could handle your tube (perhaps Banshee, RB and Amarok will
>  eventually all support StreamTubes with service "daap"?) then Banshee will
>  try to use an incoming tube that RB has already been given by MC, and they'll
>  fight over it
> The solution to all these is to have some central process dispatch the
> channels:
> * The current hack is that Empathy is that central process - have a look at
>  Arnaud's work on VNC tubes. The tube handler (Vinagre) registers itself with
>  Empathy, Empathy is the channel handler as far as MC 4 is concerned, and
>  Empathy passes the tube to Vinagre.
> * When Empathy is ported to MC 5, initially it will tell MC 5 that it handles
>  every channel, then do dispatching internally; in particular, it'll continue
>  to provide the current "EmpathyTubeHandler" hack, and Vinagre will work
>  identically.

I think the hack is missing one feature that is very important to me:
advertising that a contact provides a tube service before the tube is
actually offered. That is why I am using SetSelfCapabilities. It lets
me filter out contacts that can't participate in my tube service. (ie.
contact is not running Banshee, Banshee is running but doesn't have my
Telepathy extension installed, the Telepathy Extension was running,
but isn't anymore, etc.)

So, unless there is something that I'm missing, registering an object
with dbus name org.gnome.Empathy.DTubeHandler.myservice does not
actually advertise to other contacts that the service is there. ie.
the ContactCapabilitiesChanged signal is not raised and
GetContactCapabilities does not indicate that the service is there. Is
there a workaround that would provide that functionality?

Thanks for your help,

More information about the telepathy mailing list