[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freedesktop-dbus
Subject:    Re: Order of messages
From:       David Rheinsberg <david.rheinsberg () gmail ! com>
Date:       2019-05-27 6:24:02
Message-ID: CADyDSO7JzrMfj55=7iw4LA2jC4_rbG6QXuVT4K-B+70rbOPtzQ () mail ! gmail ! com
[Download RAW message or body]

Hi

On Sun, May 26, 2019 at 4:33 PM Fabián Orccón <cfoch.fabian@gmail.com> wrote:
> The documentation of dbus states:
> 
> > The bus daemon never reorders messages. That is, if you send two method call \
> > messages to the same recipient, they will be received in the order they were \
> > sent.
> 
> 
> I would like to know that if the order of these message is also kept across \
> different APIs. For example, if a signal is emitted from foo.bar.A and after that \
> another signal is emitted from moon.earth.B will the client receive the messages in \
> this order?

Generally: No.

Messages are queued in kernel buffers between clients and dbus-daemon.
So if A sends a message to dbus-daemon, then B sends a message to
dbus-daemon, the daemon might process the incoming messages from B
before A. There is no way for dbus-daemon to know who sent the message
first. This is inherent to the D-Bus model, where each client has its
own receive-buffer in dbus-daemon.

Note that the order is guaranteed when you actually verify that a
message is processed by dbus-daemon. For instance, if A sends a
signal, then sends a *DBUS* message to B, which then triggers B to
send a signal, then the order is guaranteed. The intermediate
dbus-message serves as barrier. So ordering *inside* the D-Bus
ecosystem is fixed and well-defined. It only gets problematic if
somehow A and B communicate via side-channels.

Cheers
David
_______________________________________________
dbus mailing list
dbus@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dbus


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic