D-Bus proxy object class
Class representing a remote object in an external application. Typically, calling a method on an instance of a ProxyObject sends a message over the bus so that the method is executed remotely on the correctponding object.
The bus the object is reachable via.
The default interface of the object, as String.
The (remote) destination of the object.
Flag determining whether the object has been introspected.
The path to the object.
The names of direct subnodes of the object in the tree.
Creates a new proxy object living on the given bus at destination dest on the given path.
# File lib/dbus/introspect.rb, line 448 def initialize(bus, dest, path) @bus, @destination, @path = bus, dest, path @interfaces = Hash.new @subnodes = Array.new end
Retrieves an interface of the proxy object (ProxyObjectInterface instance).
# File lib/dbus/introspect.rb, line 460 def [](intfname) @interfaces[intfname] end
Maps the given interface name intfname to the given interface _intf.
# File lib/dbus/introspect.rb, line 465 def []=(intfname, intf) @interfaces[intfname] = intf end
Returns whether the object has an interface with the given name.
# File lib/dbus/introspect.rb, line 479 def has_iface?(name) raise "Cannot call has_iface? if not introspected" if not @introspected @interfaces.member?(name) end
Returns the interfaces of the object.
# File lib/dbus/introspect.rb, line 455 def interfaces @interfaces.keys end
Introspects the remote object. Allows you to find and select interfaces on the object.
# File lib/dbus/introspect.rb, line 471 def introspect # Synchronous call here. xml = @bus.introspect_data(@destination, @path) ProxyObjectFactory.introspect_into(self, xml) xml end
Registers a handler, the code block, for a signal with the given name. It uses #default_iface which must have been set.
# File lib/dbus/introspect.rb, line 486 def on_signal(name, &block) if @default_iface and has_iface?(@default_iface) @interfaces[@default_iface].on_signal(@bus, name, &block) else # TODO improve raise NoMethodError end end