mirror of
https://github.com/systemd/systemd.git
synced 2024-11-08 11:27:32 +03:00
d95eb43e90
This implements two new helpers, discussed on systemd-devel about 1 year ago: sd_bus_emit_object_added() sd_bus_emit_object_removed() Both calls are equivalent to their respective counterpart sd_bus_emit_interfaces_{added/removed}(), but can figure out the list of interfaces themselves, instead of requiring the caller to provide them. Furthermore, both calls properly deal with builtin interfaces provided via org.freedesktop.DBus.* and alike. Both calls simply traverse a node and all its parent nodes to figure out a list of all interfaces registered as vtable or fallback. It then appends each of them, similar to the interfaces_{added/removed}() helpers. Note that interfaces_{added/removed}() runs a parent traversal for *each* passed interface. Therefore, it can simply bail out, once it found a parent node that implements a given interface. With object_{added/removed}() we cannot know the registered interfaces in advance, thus, we cannot run one traversal per node. Instead, we run a single traversal and remember all interfaces that we added. Therefore, a child-interface overrides all conflicting parent-interfaces. We keep a "Set *s" context to track those while climbing up the tree. |
||
---|---|---|
.. | ||
sd-bus | ||
sd-daemon | ||
sd-event | ||
sd-hwdb | ||
sd-id128 | ||
sd-login | ||
sd-network | ||
sd-path | ||
sd-resolve | ||
sd-rtnl | ||
sd-utf8 | ||
.gitignore | ||
libsystemd.pc.in | ||
libsystemd.sym.m4 | ||
Makefile |