Proposal and RFC: DAL, the Desktop Abstraction Layer

Jamie McCracken jamiemcc@blueyonder.co.uk
Fri Jan 14 08:41:30 PST 2005


David Eriksson wrote:
> On Fri, 2005-01-14 at 14:44 +0000, Jamie McCracken wrote:
> 
> 
>>Looking at the API, I cant see a function that retrieves a list of 
>>services that implement an interface.
>>
>>Dont forget we are not just dealing with services that are running and 
>>looking at the API I also can't see an easy way of saying activate a 
>>service that implements the interfaces x,y and z (maybe I have missed 
>>something? - The impression I get is Dbus knows bugger all about 
>>interfaces).
> 
> 
> I consider it a feature that D-BUS has a very dynamic approach and does
> not impose specific interfaces on its services. If I wanted strictly
> specified interfaces, I could write IDL files and use CORBA! :-)

No thanks - Im not asking dbus to know about interfaces in those terms 
but I would like to be able to ask it for a list of interface *names* 
that a service claims to implement.

To me interface names or profile IDs are essentially the same thing but 
Dbus only seems to be using the interface name for namespacing purposes. 
It doesn't matter whether you beef up interfaces or implement profiles 
as such so long as I can query it and get what I want.

All im asking for is one function that returns a list of service names 
in response to a list of interface names - now we dont need Corba 
functionality for that!

The interface names can be stored in the service description files so I 
dont consider it a big deal to implement. If someone can give me a few 
pointers on where to look in the Dbus code then I'll happily create a 
patch for this.


> 
> Speaking of CORBA, pre-defined interfaces for doing this and that exist
> there already and are called "CORBAservices":
> 
> http://www.omg.org/technology/documents/corbaservices_spec_catalog.htm
> 
> Anyway, if someone feel the need to be able to activate a service that
> implements interfaces x, y and z I suggest something like the following.
> It does not require any changes to D-BUS:
> 
> 1. Create a D-BUS service with interfaces to:
> 
>    a) register what interfaces a service provides
> 
>    b) activate a service that implements interfaces x, y and z

I dont think that will work for services that are not active (or indeed 
ones that have never been activated before) - we obviously need 
persistent data for which services (and their respective interfaces) are 
available on a user's machine. Also its not really KISS as compared to 
having a simple extra function in Dbus.

jamie.


More information about the dbus mailing list