Should GetManagedObjects include the current path?

rony rony at wu.ac.at
Mon Oct 21 13:23:20 UTC 2019


Trying to print the "https://dbus.freedesktop.org/doc/dbus-api-design.html" document you supplied
using the latest Firefox 69.0.3 (64-bit) on Windows, but get the first page only!

Please advise what to do in order to become able to print the entire document (did not find a
"print" menu on the page that would render the text in a printable form either).

---rony


On 21.10.2019 15:09, Simon McVittie wrote:
> On Sat, 19 Oct 2019 at 22:18:26 +0200, David Henningsson wrote:
>> Suppose we have two paths, /hello and /hello/world, where /hello implements
>> org.freedesktop.DBus.ObjectManager. When GetManagedObjects is called on
>> /hello, should it return data for both /hello and /hello/world, or just
>> /hello/world?
> I would expect just /hello/world, because ObjectManager is designed
> for situations where a service manages a collection of similar objects
> (windows, documents, pictures, communication channels, whatever). If
> /hello is conceptually a "document manager" that manages a collection of
> documents, then /hello is probably not itself a document, so it should
> not usually list itself as a child.
>
> This might help:
> https://dbus.freedesktop.org/doc/dbus-api-design.html#interface-object-manager
>
>>  - When calling AddMatch, the "path_namespace" in the example a few lines
>> below is written so that it does include the path itself
> If you are interested in the objects managed by the object manager, you
> also need to pay attention to signals emitted by the object manager itself,
> because newly created objects are signalled by InterfacesAdded from the
> object manager, and deleted objects are signalled by InterfacesRemoved
> from the object manager.
>
> Also, in general signal subscription is designed so that it is harmless
> to receive and ignore signals that you weren't expecting (minimizing
> the signals you receive is a good performance and power consumption
> optimization, but is not strictly required). If your process contains more
> than one D-Bus client sharing a connection, you will in fact be receiving
> the union of all the signals requested by any of those D-Bus clients.
>
> Some past D-Bus implementations have even used bloom filters (a
> probabilistic data structure) instead of an exact data structure for
> signal matching, which means you are guaranteed to receive all the signals
> you subscribed to, but you also receive a small number of signals that
> you didn't subscribe to.
>
>>  - The last part is not true for the root path "/", because if ObjectManager
>> is implemented on "/", then "/" + "/" = "//" so this needs special handling
> Yes, that's true. But D-Bus API designers probably shouldn't do this
> anyway, because if one API (let's say "document manager") says "/" is
> an ObjectManager for a collection of document objects, and another API
> (let's say "communication channel manager") says "/" is an ObjectManager
> for a collection of communication channels, and you are writing a
> document-sharing service that uses both documents and communication
> channels, then you're stuck. The closest you can get to implementing
> both APIs correctly is that clients that try to list either documents
> or communication channels get a list containing both, which is not what
> they will be expecting.
>
> Normally you would implement "document manager" at an entry-point object
> path like /com/example/DocumentManager1, "communication channel manager"
> at /net/example/ChannelManager1, and so on (where the reversed domain
> name like example.com belongs to the designer of each API). Each path
> describes its own collection of objects and they do not collide.
>
> If you use GNOME, you can see this by inspecting GNOME Shell in d-feet:
> it implements many D-Bus interfaces, which can easily coexist because
> none of them are on "/".
>
> See https://dbus.freedesktop.org/doc/dbus-api-design.html#naming-conventions
> and https://dbus.freedesktop.org/doc/dbus-api-design.html#api-versioning
> for more on this topic.
>
>     smcv
> _______________________________________________
> dbus mailing list
> dbus at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dbus


More information about the dbus mailing list