Hi On Tue, Feb 18, 2014 at 12:02 AM, David Herrmann <[email protected]> wrote: > The ObjectManager dbus interface provides an InterfacesAdded signal to > notify others about new interfaces that are added to an object. The same > signal is also used to advertise new objects (by adding the first > interface to a given object path) and delete them. > > However, our internal helpers sd_bus_emit_interfaces_{added,removed}() > cannot properly deal with built-in interfaces like DBus.Properties as > there's no vtable for it. Therefore, to avoid callers to track these > internal interfaces, we provide two separate helpers which explicitly add > these interfaces to the signal. > > sd_bus_emit_object_added() traverses the list of all vtables and fallback > vtables (making sure a fallback never overwrites a real vtable!) and also > adds built-in interfaces. > > sd_bus_emit_object_removed(): WIP > --- > Hi > > This is untested and I just wanted to get some feedback whether that's the way > to go. Given the previous discussion we decided on two new entry-points to add > and remove objects. For convenience, I now tried to omit any "char > **interfaces" > argument to object_added() and just try to figure them out on my own. > > However, on object_removed() I cannot do that as node_vtable_get_userdata() is > very likely to return "0" for all these objects. So there is no way to figure > out which interfaces actually existed on that thing. We would require users to > call it *before* destroying/unlinking the actual object. I don't know whether > that's ok to assume? > > If not, we can just add a "char **interfaces" argument, but then it would > differ > from object_added().. Not sure what sounds better.. > > Cheers > David > > src/libsystemd/sd-bus/bus-objects.c | 210 > ++++++++++++++++++++++++++++++++++++ > src/systemd/sd-bus.h | 2 + > 2 files changed, 212 insertions(+)
After almost 1 year of niche existence I finally went ahead and re-implemented this. Review is welcome! Pushed. Thanks David _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
