single instance with dbus

Christian Hammond chipx86 at chipx86.com
Tue Apr 24 16:44:06 PDT 2007


Thanks, Havoc. I'll try to get this fixed up for the next release.

Christian


On 4/24/07, Havoc Pennington <hp at redhat.com> wrote:
>
> Hi,
>
> Just reading notification-daemon code, I figured I had better write up
> how this pattern is intended to work, I've seen the details wrong in a
> couple other places too.
>
> If you want only one instance of the bus name to ever exist, you should
> do this:
>
>   - support a --replace command line option
>   - on startup, call dbus_bus_request_name() (or the equivalent with
>     the bindings you are using). Supply the flags
>     DO_NOT_QUEUE, ALLOW_REPLACEMENT, and if --replace was
>     specified, REPLACE_EXISTING
>   - if you get an error reply (DBusError), exit
>   - if you get a result code other than PRIMARY_OWNER or ALREADY_OWNER,
>     exit
>   - set up a signal handler for the NameLost signal and your bus name,
>     and exit if you receive it. This signal is always sent so it is not
>     necessary to add a "match rule"
>
> For most daemons the above is correct. --replace is mostly used for
> debugging, but may have other uses.
>
> (notification-daemon developers: the bugs are that you need to check
> request_name_result, need to specify ALLOW_REPLACEMENT, need to handle
> NameLost - I'd file a bug but I'd have to learn Trac ;-)
>
> If you have a "generic" name and multiple apps supporting it might be
> running it at any given time, you might do things differently:
>
>   - use QUEUE mode (pass RequestName flags of 0)
>   - you should always get at least queued for the bus name, so just
>     request it and don't worry about whether you have it at any given
>     time
>
> This is appropriate for a name like TextEditor or Browser where another
> app might want to use "whichever one is open" but it's OK to run two of
> them at once. Both will be queued for the bus name, the last one to
> start will actually own it. If one exits, the other will take over.
>
> For a name you really want to have only one of, though, such as
> "Epiphany" rather than "Browser," you should use the first pattern.
>
> Havoc
>
> _______________________________________________
> dbus mailing list
> dbus at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dbus
>



-- 
Christian Hammond - chipx86 at chipx86.com
VMware, Inc.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freedesktop.org/archives/dbus/attachments/20070424/be85bcf5/attachment.html


More information about the dbus mailing list