As was discussed yesterday, I'm working on the sssd dbus infrastructure,
so we can have rich access to sssd information via Dbus. Jakub has been
working on implementing methods that expose that.
These are infrastructure patches, that take the basic DBus support that
sssd has (ie: sbus) and start to mature it so that we can handle things
like properties, NNN-instances of objects, automatic introspection,
object manager, automatic unpacking of args for handlers, and so on.
As I mentioned earlier, some of these concepts may seem foreign, for
example using DBus interface definitions to drive things.
However this has many benefits as we get into implementing more dbus stuff:
* Removes boiler-plate all over the place.
* Lets the compiler check dbus interface implementations and usage.
* Makes it possible to do complex stuff (PropertiesChanged or
ObjectManager) that would otherwise be insane.
I have tried to balance things and not go crazy with changing style all
over the place and keep to the sssd way of doing things most of the time.
Yes, this does involve a codegen, much like flex or bison. It has real
concrete benefits. While it is possible to handcraft the necessary meta
data structs (see patch 0001), you lose compile-time checking and some
The codegen generates as little code as possible, and we have tests to
verify that it is correct (thanks Sumit for that idea).
It's important to note that an interface, and an implemented instance of
that interface are two different things.
There's a lot more to do. Next up will be implementing automatic
introspection generation, and property access.
If you prefer to access this as a branch, see: