[GnomeMeeting-devel-list] Dbus' future in gnomemeeting



Hi,

======== FOREWORDS ========

this (too) long mail is divided in several parts :
- an account on the dbus interface as already live in gnomemeeting ;
- a discussion of what is good in this interface ;
- a discussion of what is bad in this interface ;
- ideas on improvements ;
- problems to solve.

Hopefully this will make it more readable.

======== CURRENT INTERFACE ========

Here is the current interface of gnomemeeting through dbus (taken
directly from src/dbus_component.h) :

/* Here is the description of DBUS messages understood by this component:
 *
 * Method calls:
 * =============
 *
 * "ConnectTo"
 * in    : string (url)
 * out   : nil
 * action: makes gnomemeeting call the given url
 *
 * "GetState"
 * in    : nil
 * out   : string (describes gnomemeeting's state: Standby, Calling, etc)
 * action: none
 *
 * "Disconnect"
 * in    : string (call token)
 * out   : nil
 * action: gnomemeeting disconnects the given call
 *
 * "GetCallsList"
 * in    : nil
 * out   : list of strings (call tokens, iterate to get them)
 *
 * "GetCallInfo"
 * in    : string (call token)
 * out   : string (name), string (url) and string (application)
 * action: none
 *
 * Signals:
 * ========
 *
 * "StateChanged"
 * data: string (state)
 * goal: gnomemeeting's state changed
 *
 * "AddCall"
 * data: string (call token)
 * goal: gnomemeeting manages a new call
 * "DeleteCall"
 * data: string (call token)
 * goal: gnomemeeting closed a call (ie: the call token isn't
valid anymore!)
 *
 */

======== CURRENT GOOD ========

This interface makes it easy to place calls, know how many calls are active with whom and stop them (see the remote I wrote using this).

It is nice that Disconnect and GetCallInfo take a call token : this type of construction scales to multi-call.

This simple interface should already have made it easy to place voip calls from any program with a contact list : right click on a contact and call...

======== CURRENT BAD ========

Here is why that interface is too simple :
- the ConnectTo method call should return a token, to allow tracking
what happens afterwards ;
- there's no way to get the local address... which makes it difficult to receive calls ; - the GetState method and StateChanged signal are about the whole program's state... which is definitely not going to hold water in multi-call ;
- it can only disconnect a token, which is restrictive.

======== IMPROVEMENT IDEAS ========

- call tokens should become the norm, and the interface should be about using and knowing about them ; - call tokens should have a broader range of states : calling, established, transferred, paused, stopping or stopped come to mind ; - a single CallInfo signal could be enough ; such a signal would always come with a call token and its new state, but could also come with more information ; - AddCall and DeleteCall disappear : a call is created when a CallInfo about it being somehow live comes, and dies when its new state is "stopped" ; - it should probably be possible to create/stop/pause/whatever media streams within a call (useful for integration with an IM client for example...) ;
- send the state as an integer.

======== PROBLEMS TO SOLVE ========

Most of the discussed improvement ideas can already be done quite easily given gnomemeeting's current state ; but I'm not sure how easy it will be to get direct access to calls internals...

======== LAST WORDS ========

Any insight on this ?

Snark



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]