[Telepathy] MC5 and my GSoC project for Banshee

Sjoerd Simons sjoerd.simons at collabora.co.uk
Sun Jun 21 06:55:23 PDT 2009

On Thu, Jun 18, 2009 at 04:14:10PM -0600, Neil Loknath wrote:
> Hey everyone!
> My name is Neil (nloko on IRC), and I'm working on the Banshee with
> Telepathy Integration project for SoC [0]. As I understand it, MC5 is coming
> soon. If you've seen my blog posts [1], you know that I've made some good
> progress on it. Therefore, I will need to make some changes to my project
> when Empathy is ported to MC5. I thought it would be a good idea to get some
> feedback on what I think I will need to change. I've already had some
> discussion with wjt on IRC, but more information/confirmation on what I will
> need to do will be very helpful. See below:
> 1) Currently, I am using MissionControl.AccountStatusChanged signal to
> detect when connections become active/disconnected.
>     MC5: Use Account.AccountPropertiesChanged [2]


> 2) Using MissionControl.SetPresence to set presence message (I know Usertune
> would be more appropriate, but since it's not there, I am making due with
> this)
>     MC5: Use Account.RequestedPresence property [3]??

... Please don't do this, it's very annoying.. But if you really want to then
yes, Account.RequestedPresence is the most appropriate.

> 3) I'm using the ContactListChannel, Group, and SimplePresence interfaces to
> find contact, track presence, etc.
>     MC5: Assuming that nothing here will have to change

Correct, the only thing that differs here is how you would get the initial
Connection object, after that you can do all the same things.

> 4) Using ContactCapabilities.SetSelfCapabilities to advertise my DBusTube
> service. And, using ContactCapabilities.GetCapabilities to find out if other
> contacts support my service.
>     MC5:
> * Register dbus name org.freedesktop.Telepathy.Client.clientname,
>   (where clientname = Banshee ? ), that points to an object implementing
>   org.freedesktop.Telepathy.Client.Handler [4]. Set the HandleChannelFilter
>   property to the channels that are to be handled by Banshee. Banshee will
>   be a non-activatible client, so no .client file.

Yeah. You register org.freedesktop.Telepathy.Client.Banshee which implements
org.freedesktop.Telepathy.Client and org.freedesktop.Telepathy.Client.Handler
interfaces. The Interfaces property on Telepathy.Client should contain
Client.Handler. And as you say the HandleChannelFilter contains the channels
handled by Banshee

> * Implement the HandleChannels method to handle my channels (ie.
>   accept/close tube). This makes handling the NewChannels signal of the
>   Requests interface obsolete, correct? In other words, I won't need it.

Yes. NewChannels will be handled by MC5 and it'll call your HandleChannels
method if you are the choosen handler for the channel.

> * I don't need to implement Client.Approver [5] as well, do I? It
>   seems redundant to me.

You don't have to (and probably shouldn't) implement an approver indeed

> * Can ContactCapabilities.GetCapabilities and
>   ContactCapabilitiesChanged signal still be used to discover what services
>   other contacts provide? I use this to filter out contacts that don't matter
>   to Banshee, since they can't participate in sharing.

Yeah, that'll stay the same

> 5) I'm using the Requests Interface [6] to create channels and detect new
> ones. On NewChannels signal, I compare SelfHandle to InitiatorHandle to
> determine where the channel is coming from and take the appropriate action.
>     MC5: Should I use org.freedesktop.Telepathy.ChannelDispatcher [7]
> instead? And, pass it my Banshee Client.Handler dbus name?

Yes, use CreateChannel on the ChannelDispatcher and pass yourself as the
preferred handler for that channel.

> And, as I have said above, Client.Handler.HandleChannels replaces the need to
> handle the NewChannels signal, right? Or, should I still use the Requests
> interface?

Nope, as mentioned above, the dispatcher does the job of requesting channels
and demultiplexing incoming channels so you don't have to use the Requests
interface directly.

> Long post! But, this information will be very helpful to me, and maybe
> others too. If there is anything else you think I should know, please let me
> know. I hope I have covered everything.
> Thanks in advance for your help with my project

No problem, sorry for taking quite some time to get a response to you :)

For your penance, say five Hail Marys and one loud BLAH!

More information about the telepathy mailing list