Re: Order of messages

David Rheinsberg <[email protected]>
Newsgroups gmane.comp.freedesktop.dbus
Message-ID <CADyDSO7JzrMfj55=7iw4LA2jC4_rbG6QXuVT4K-B+70rbOPtzQ@mail.gmail.com>
Hi

On Sun, May 26, 2019 at 4:33 PM Fabián Orccón <[email protected]> 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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dbus
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.