[systemd-devel] [RFC][PATCH] bus: Add destination field to sd_bus_message_new_signal() and sd_bus_emit_signal()

Lennart Poettering lennart at poettering.net
Thu Dec 5 06:10:04 PST 2013


On Thu, 05.12.13 13:09, Simon McVittie (simon.mcvittie at collabora.co.uk) wrote:

> 
> On 05/12/13 12:13, Lukasz Skalski wrote:
> > destination - the unique bus name for the destination for the signal
> > or NULL to emit to all listeners.
> 
> This is rarely-needed functionality, but sometimes necessary. If anyone
> is going to replicate the client-facing functionality of the dbus-daemon
> using libsystemd-bus, you'll need this for NameAcquired and NameLost;
> and I've seen other real-world APIs where unicast signals were also
> desirable.

Note that libsystemd-bus when used on top of kdbus actually gets rid of
NameLost/NameAcquired. They are entirely redundant due to
NameOwnerChanged, and people should just use that.

libsystemd-bus when used against dbus-daemon will still get these
though. And the compat proxy will fake them in too, so that dbus1
clients continue to work.

BTW, I started documenting the differences between dbus1 and kdbus a bit here:

http://cgit.freedesktop.org/systemd/systemd/plain/src/libsystemd-bus/DIFFERENCES

We also want to enforce gvariant native endian marshalling on kdbus, and
I documented how we map things to the old structures then:

http://cgit.freedesktop.org/systemd/systemd/plain/src/libsystemd-bus/GVARIANT-SERIALIZATION

I just put those docs together yesterday. Eventually I'll submit them
for the dbus spec.

This makes no attempt of establishing gvariant as an alternative
marshalling on socket connections, it's only focussed on kdbus
transports so far. We could allow it on sockets too though, but this
requires explicit nego to stay compatible. Either way systemd-bus-proxyd
will do the necessary remarshalling when connecting dbus1 clients to kdbus.

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list