I believe that the wording of the spec has always allowed unicast signals,
but most bindings assume that signals are broadcasts, so it seems worth
saying specifically that this feature exists and can be useful.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39450
Reviewed-by: Thiago Macieira <thiago@kde.org>
The spec previously claimed that only messages matching the client's
match rules would be received. This is not actually true: messages
listing a client as their DESTINATION are always delivered (security
policy permitting).
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=39450
Reviewed-by: Thiago Macieira <thiago@kde.org>
The type system can be used independently, for instance in GVariant
(although GVariant's binary encoding is in fact not the same).
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=38252
Reviewed-by: Lennart Poettering <lennart@poettering.net>
The org.freedesktop.DBus.ObjectManager provides a standardized and
efficient way of keeping one or more tree of objects synchronized
between one server and several clients.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34869
Signed-off-by: David Zeuthen <davidz@redhat.com>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Also disallow having both path and path_namespace in the same match rule
(it wouldn't make sense, path is more specific than path_namespace).
As per IRC discussion with davidz and wjt.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34870
Add a new path_prefix match rule that can be used for efficient
implementations of the org.freedesktop.DBus.ObjectManager interface
(see bug 34869).
https://bugs.freedesktop.org/show_bug.cgi?id=34870
Signed-off-by: David Zeuthen <davidz@redhat.com>
It's unclear at first reading whether "may contain only one element"
means "elements >= 1, as an exception to the usual rule that
elements >= 2" (which is what was intended), or "elements == 1".
"Like a bus name or interface name" is a little ambiguous because they
have different syntactic restrictions: specifically allow any valid bus
name, which also allows all interface names.
Add DBUS_INVALID_NESTED_TOO_DEEPLY validity problem and a test that
should generate it.
Previously, we rejected deep nesting in the signature, but
variants allow dynamic message nesting, conditional only
on the depth of the message body.
The nesting limit is 64, which was also the limit in static
signatures. Empirically, dynamic nesting depth observed on my
Fedora 14 system doesn't exceed 2; 64 is really a huge limit.
https://bugs.freedesktop.org/show_bug.cgi?id=32321
Signed-Off-By: Colin Walters <walters@verbum.org>
Signed-off-by: Will Thompson <will.thompson@collabora.co.uk>
It was pointed out on the mailing list that it would be useful to know
that a given property has changed without conveying its value. Because
without this parameter a true_no_value property could change, however
there is no way for a client-side proxy to know _what_ property it was
(only that some property changed).
With the parameter, however, a client-side proxy can reliably discard
a cached property value.
Also rename the "true_no_value" to "invalidates" as the spec is now
using this language.
Also allow using the annotation in the enclosed interface name.
Also rename the annotation name so it uses Property in its name
instead of Properties. This is to be more consistent with the existing
org.freedesktop.DBus.Method.NoReply annotation which uses Method, not
Methods.
Signed-off-by: David Zeuthen <davidz@redhat.com>
Some notes about this new signal
- The PropertiesChanged() signal is optional. An application can
convey support for this signal by either including or excluding it
from the returned introspection data much like apps not supporting
(or predating) the GetAll() method does not include GetAll() in the
introspection data.
- An object can use PropertiesChanged() but opt out of using it for
one or more properties by using the
org.freedesktop.DBus.Properties.EmitsChangedSignal
annotation on the properties in question
- Applications can start using this new signal without breaking
compatibility with clients relying on existing D-Bus API.
The intent of the patch is simply to standardize existing behavior
- EggDBus has a very similar signal called EggDBusPropertiesChanged()
(also on the org.freedesktop.DBus.Properties interface)
- NetworkManager has a PropertiesChanged() signal on each different
interface (e.g. not org.fd.D.P) that it implements
- GDBus, an implementation of the D-Bus protocol in GLib, already
implements this signal
Signed-off-by: David Zeuthen <davidz@redhat.com>
UpdateActivationEnvironment takes a a{ss}. This means only
valid UTF-8 can be used. Environment variables are normally
ascii, but in theory have no specific encoding to them. This
means that certain valid environment variables can't be sent
to the bus for updating its activation environment.
This commit just adds a note to the spec explaining this
restriction.