well-known names note

Simon McVittie simon.mcvittie at collabora.co.uk
Wed Apr 15 02:19:34 PDT 2015


On 14/04/15 19:40, Havoc Pennington wrote:
> The "correct" way to use dbus - at least
> back in the day, maybe you all have changed it - is to resolve the
> well-known name to a unique name and then use the unique name, thus
> getting a logical "socket" to a specific process.

Just to back this up, here is an opinion from a current D-Bus maintainer:

The correct way is normally, as Havoc said, to resolve the well-known
name to a unique name, and have a stateful conversation with the unique
name from then on.

*If* you happen to know that you are talking to a service specifically
designed to be stateless (or equivalently, one that was designed to
store all state and share it between instances), *then* you can use
by-well-known-name routing, but this is the exception rather than the
rule. For instance, by-well-known-name routing might be OK for like
systemd-hostnamed or systemd-localed, since they have no "state" that is
not stored on disk, and are specifically designed to make an exit +
restart insignificant.

In telepathy-glib's TpProxy mini-D-Bus-binding (it started as a
dbus-glib mitigation layer and grew into most of a binding), one of the
flags that can be set in a subclass is "please use the well-known name"
(it is not the default). If I remember correctly, we only actually have
one object that uses that flag, namely the AccountManager (which is not,
strictly speaking, stateless, but it's a singleton and stores all its
important state, so instances are equivalent to each other across a
crash/restart).

-- 
Simon McVittie
Collabora Ltd. <http://www.collabora.com/>



More information about the dbus mailing list