> errors should not affect properties.
I don't see why not, a Connect error will cause State to change for
example, could also affect some KnownNetwork properties, but there
will be some more obvious cases.
I think in our case we emit signals after returning from the Connect
method call and KnownNetworks doesn't have properties. But fair enough.
> Your signal + InterfacesAdded example is valid, though probably never occurs
> in practice. I can't think of any other situation where an in-order signal
> reception was useful.
In all cases it can be worked around by clients like in the Scan case.
We can fix it on the iwd side just for this one case but I think
instead we should have a policy that tells clients if they can rely on
the order of the signals or not. If not then the test utilities
should deal with this.
In general the stated policy is that the client cannot rely on the order
of signals. However, in certain cases it is extremely advantageous for
us to implement a logical order and stick to it. This has the effect
that a client with decent D-Bus bindings will 'just work'.
Scan() is one such example.
> I detect hand-waving :) Can you describe specific situations where this is
> a concern?
The Scanning case is one but really it's same as other situations
related to State and other properties, where the client code
(including agent methods) need to take some decision based on the
My original comment was about limiting the scope to a single object.
E.g. if /foo emits a property change and then sends a method return,
only property changed signals for /foo should be processed. The rest
can be still coalesced.
Can you see a situation where a signal order can be guaranteed across
Fixing it just for the Scanning case probably costs us about a line
more or the same amount code as actually fixing it in general.
Dropping the coalescing code would simplify the code even more though.
So that's the question. My feeling is that if we don't limit the scope,
then the coalescing logic is more trouble than it is worth and we should
just send the signals directly.