DBus for Generic Data Access Methods?

Marcel Holtmann marcel at holtmann.org
Tue Jan 30 01:21:11 CET 2007

Hi Lars,

> > the D-Bus interface only provides an API contract. You can replace the
> > underlying storage format or application at any time. That is the whole
> > point behind D-Bus. You don't link against any specific library except
> > the D-Bus library itself (or bindings in case of high level languages)
> > and then communicate over D-Bus.
> >   
> So far I have understood, I thats why I like the use of D-Bus :-)
> > If the implementation is EDS or if it uses Berkley DB or SQLite or if it
> > is anything else is longer important for the application as long as the
> > implementation fulfills the API contract.
> >   
> OK. I might have misunderstood it completely. But I believed that 
> /org/gnome/... was 'owned' by gnome.org and that any alternative 
> implementation had to go somewhere else.

the path is only a string and the only requirement is that it needs to
start with a "/". The well known bus name "org.gnome" must be unique and
this means you can't start two applications that request "org.gnome" as
bus name. However the well known bus name in general is also only a
string. And nobody prevents you from using it. So a replacement for EDS
for example will simply provide the well known bus from EDS and then the
paths and interfaces from EDS.

Just a reminder, every path is per unique bus name. Two applications can
register the same path.

The ownership of paths, interfaces and bus names is kinda misleading.
You can always use them and nobody prevents you from doing so. It is
only an API contract. Nothing more and nothing less.

You can compare it to Libc function. For example you have printf() and
this can be implemented by Glibc or by DietLibc or by whatever Libc
implementation you find. The only important is the parameter list. This
is the API contract. In case of D-Bus you have a more complex API
contract since it is an object oriented approach.

> The extension thing is still interesting, but can be added later.

You simply add an interface. It is really as simple as that.



More information about the openmoko-devel mailing list