[Telepathy] Room list spec

Robert McQueen robert.mcqueen at collabora.co.uk
Mon Jul 30 07:38:19 PDT 2007


Xavier Claessens wrote:
> Hello,
> 
> I implemented the room list spec in empathy and I have some problems
> with it:
> 
> - If the roomlist channel is a singleton and 2 clients request it, when
> the first client do not need the channel anymore it Close the channel
> and the 2sd client can't get more rooms.

The reason it's /allowed/ to be singleton in the spec is because there
are some protocols (eg IRC) where you can only have one room listing
going on at once. I don't think it's useful to try and allow two clients
to concurrently access the same room list, nor is it useful for the
connection manager to do caching of the results to allow for this. If
the protocol only allows one listing at a time, and one guy is already
listing rooms, the other guy should wait. In the case of XMPP, you can
list rooms on multiple servers concurrently, so in Gabble it just
shouldn't be a singleton.

> - We can't list rooms from another server, that's supported by jabber. I
> see 2 solutions: 1) we add a handle type ROOMLIST and the handle's name
> is the server we want to get the list from. 2) We need something like
> ListRooms (s: server).

I'd make the conference server a property of the roomlist channel, which
defaults to the current value (gets it from disco requests on the
server, or the fallback-conference-server property on the connection)
but can be changed before you call ListRooms. Changing the API to add
the server as a handle type or argument is really weird because pretty
much only XMPP has different chat servers you can list rooms on.

> - If a client already started to list rooms, another client can't get
> already emitted GotRooms. We need something like GetRooms()->a(rooms)

Hmm... I don't think that's a good idea. Having multiple clients
operating on the same room list is a bit pathological. The main thing is
that in XMPP, it doesn't actually need to be a singleton, so that's a
bug in Gabble.

> I think we should change that spec.
> Any suggestions?

Fix Gabble so that it's room list isn't a singleton, because XMPP
doesn't require that, and implement a 'conference-server' property on
its room list channel, which you can change before you call ListRooms.

> Xavier Claessens.

Regards,
Rob


More information about the Telepathy mailing list