2008/12/27 David Zeuthen <da...@fubar.dk>

> On Fri, 2008-12-26 at 22:39 +0100, Mikkel Kamstrup Erlandsen wrote:
> >
> >         So you'd need to tag (using gtk-doc annotations) what methods,
> >         properties and signals are to be exported via D-Bus. But it
> >         would need
> >         to be complicated
> >
> > The idea was more in the line of how Java does RMI. You define
> > interface + impl to export. Consider a Pingable interface (with the
> > obvious method) and some instance, myob, of a class MyObject
> > implementing Pingable. Then you just call egg_dbus_export (Pingable,
> > myob); to put the object on the bus. This still needs a bus name to
> > export under of course, but this here is just the basic idea.
> >
> > The use case I had in mind was xesam-glib where I wanted to integrate
> > Xesam services that where not necessarily DBus based. Think Bluetooth,
> > Avahi, REST, Soap, etc. All these would be called "transports" in the
> > terminology of http://live.gnome.org/MikkelKamstrup/GProxyIdea, in
> > which case the above export would become the more general
> > g_transport_export(my_trans, Pingable, myob);
>
> Yeah. So you can easily do this with EggDBus right now. Suppose you had
> a simple GInterface XesamService that applications offering search
> services can implement (I haven't looked closely at Xesam so it's
> probably slightly wrong but you get the idea).
>
> You'd use the IDL (presently D-Bus introspection XML) to generate a
> GInterface, let's call it XesamServiceAdapter. Then you'd write a
> private GObject class that implements this interface, let's call it
> _XesamServiceAdapterImpl. The constructor would look like this
>
>  XesamServiceAdapterImpl* _xesam_service_adapter_new (XesamService
> *service);
>
> and the class would forward the IPC calls to the passed service. You can
> then export that object on the bus
>
>  adapter = _xesam_service_adapter_new (service);
>  egg_dbus_connection_register_interface (bus,
>                                         "/org/xesam/Application",
>                                         adapter);
>

Yes, this is actually very close to how xesam-glib use dbus-glib right now
to abstract DBus out of the core interface. It has in fact proven to be a
great boon to do it like this because it allows me to hook tests classes and
all sorts of funkyness in instead of the dbus service. I can only advice
people keen on unit testing to do the same.


>
> I think *something* like this would be nice; perhaps it would be natural
> if PackageKit offered a Xesam interface; I don't know enough about Xesam
> if something like this makes sense; you and Richard Hughes knows better
> than me ;-)
>

This has crossed my mind and is not unthinkable (on my part at least), but
it is a can of worms. When the time is right we can talk it over on the PK
or Xesam mailing lists. I am more than willing to engage in that discussion.



> Now, EggDBus right now only does D-Bus. But as noted in the sub-thread
> with Dan Winship we *could* make the core bits independent of the
> transport. Things like XML-RPC, SOAP and REST (and, ugh, CORBA) probably
> makes sense; other (future) transports might make sense too.
>
> Right now, I think whether we end up teaching EggDBus about other IPC
> systems is a decision that needs to be made together with the GLib
> maintainers. I mean, my proposal is that we get an IPC system in GLib
> stack because it turns out a lot of stuff using the GLib stack needs it
> (including GTK+).
>
> If it turns out the GLib maintainers don't want an IPC system at all,
> I'm all for renaming EggDBus to NGIpc or something else and just have it
> be a separate project. But ideally, I think, we want something like a
> libgipc-2.0.so library just like we have libgio-2.0.so. Or if the GLib
> maintainers decide that they only want the D-Bus bits, then we'd have
> libgdbus-2.0.so and other IPC transports would have to do their own
> thing (which I don't think is ideal).
>
> So, yeah, to answer your mail we can do all this in, I think, a very
> nice way. But right now I'm waiting for feedback from the GLib
> maintainers on how to proceed.
>
> Either way, EggDBus is pretty much "done" already (sans a few details)
> and will be available in some shape or form soon. And since both the
> replacement for HAL (the DeviceKit projects) and the next version of
> PolicyKit is going to use it, this library will most likely end up on
> all GNOME desktops anyway.


Great. It has pretty much been all good news to me, so thanks for clearing
it up for me :-)

-- 
Cheers,
Mikkel
_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list

Reply via email to