Module: DBus::ObjectManager
- Defined in:
- lib/dbus/object_manager.rb
Overview
A mixin for Object implementing org.freedesktop.DBus.ObjectManager.
Service#export and Service#unexport will look for an ObjectManager parent in the path hierarchy. If found, it will emit InterfacesAdded or InterfacesRemoved, as appropriate.
Constant Summary collapse
- OBJECT_MANAGER_INTERFACE =
"org.freedesktop.DBus.ObjectManager"
Class Method Summary collapse
Instance Method Summary collapse
-
#managed_objects ⇒ Hash{ObjectPath => Hash{String => Hash{String => Data::Base}}}
Object -> interface -> property -> value.
- #object_added(object) ⇒ void
- #object_removed(object) ⇒ void
Class Method Details
.included(base) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/dbus/object_manager.rb', line 45 def self.included(base) base.class_eval do dbus_interface OBJECT_MANAGER_INTERFACE do dbus_method :GetManagedObjects, "out res:a{oa{sa{sv}}}" do [managed_objects] end dbus_signal :InterfacesAdded, "object:o, interfaces_and_properties:a{sa{sv}}" dbus_signal :InterfacesRemoved, "object:o, interfaces:as" end end end |
Instance Method Details
#managed_objects ⇒ Hash{ObjectPath => Hash{String => Hash{String => Data::Base}}}
Returns object -> interface -> property -> value.
25 26 27 28 29 30 31 |
# File 'lib/dbus/object_manager.rb', line 25 def managed_objects # FIXME: also fix the "service" concept descendant_objects = @service.descendants_for(path) descendant_objects.each_with_object({}) do |obj, hash| hash[obj.path] = obj.interfaces_and_properties end end |
#object_added(object) ⇒ void
This method returns an undefined value.
35 36 37 |
# File 'lib/dbus/object_manager.rb', line 35 def object_added(object) InterfacesAdded(object.path, object.interfaces_and_properties) end |
#object_removed(object) ⇒ void
This method returns an undefined value.
41 42 43 |
# File 'lib/dbus/object_manager.rb', line 41 def object_removed(object) InterfacesRemoved(object.path, object.intfs.keys) end |