Class: DBus::ProxyObject
- Inherits:
-
Object
- Object
- DBus::ProxyObject
- Defined in:
- lib/dbus/introspect.rb
Overview
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.
Instance Attribute Summary collapse
-
#bus ⇒ Object
readonly
The bus the object is reachable via.
-
#default_iface ⇒ Object
The default interface of the object.
-
#destination ⇒ Object
readonly
The (remote) destination of the object.
-
#introspected ⇒ Object
Flag determining whether the object has been introspected.
-
#path ⇒ Object
readonly
The path to the object.
-
#subnodes ⇒ Object
The subnodes of the object in the tree.
Instance Method Summary collapse
-
#[](intfname) ⇒ Object
Retrieves an interface of the proxy object (ProxyObjectInterface instance).
-
#[]=(intfname, intf) ⇒ Object
Maps the given interface name intfname to the given interface _intf.
-
#has_iface?(name) ⇒ Boolean
Returns whether the object has an interface with the given name.
-
#initialize(bus, dest, path) ⇒ ProxyObject
constructor
Creates a new proxy object living on the given bus at destination dest on the given path.
-
#interfaces ⇒ Object
Returns the interfaces of the object.
-
#introspect ⇒ Object
Introspects the remote object.
-
#on_signal(name, &block) ⇒ Object
Registers a handler, the code block, for a signal with the given name.
Constructor Details
#initialize(bus, dest, path) ⇒ ProxyObject
Creates a new proxy object living on the given bus at destination dest on the given path.
419 420 421 422 423 |
# File 'lib/dbus/introspect.rb', line 419 def initialize(bus, dest, path) @bus, @destination, @path = bus, dest, path @interfaces = Hash.new @subnodes = Array.new end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args) ⇒ Object (private)
Handles all unkown methods, mostly to route method calls to the default interface.
469 470 471 472 473 474 475 |
# File 'lib/dbus/introspect.rb', line 469 def method_missing(name, *args) if @default_iface and has_iface?(@default_iface) @interfaces[@default_iface].method(name).call(*args) else raise NoMethodError end end |
Instance Attribute Details
#bus ⇒ Object (readonly)
The bus the object is reachable via.
413 414 415 |
# File 'lib/dbus/introspect.rb', line 413 def bus @bus end |
#default_iface ⇒ Object
The default interface of the object.
415 416 417 |
# File 'lib/dbus/introspect.rb', line 415 def default_iface @default_iface end |
#destination ⇒ Object (readonly)
The (remote) destination of the object.
409 410 411 |
# File 'lib/dbus/introspect.rb', line 409 def destination @destination end |
#introspected ⇒ Object
Flag determining whether the object has been introspected.
407 408 409 |
# File 'lib/dbus/introspect.rb', line 407 def introspected @introspected end |
#path ⇒ Object (readonly)
The path to the object.
411 412 413 |
# File 'lib/dbus/introspect.rb', line 411 def path @path end |
#subnodes ⇒ Object
The subnodes of the object in the tree.
405 406 407 |
# File 'lib/dbus/introspect.rb', line 405 def subnodes @subnodes end |
Instance Method Details
#[](intfname) ⇒ Object
Retrieves an interface of the proxy object (ProxyObjectInterface instance).
431 432 433 |
# File 'lib/dbus/introspect.rb', line 431 def [](intfname) @interfaces[intfname] end |
#[]=(intfname, intf) ⇒ Object
Maps the given interface name intfname to the given interface _intf.
436 437 438 |
# File 'lib/dbus/introspect.rb', line 436 def []=(intfname, intf) @interfaces[intfname] = intf end |
#has_iface?(name) ⇒ Boolean
Returns whether the object has an interface with the given name.
450 451 452 453 |
# File 'lib/dbus/introspect.rb', line 450 def has_iface?(name) raise "Cannot call has_iface? is not introspected" if not @introspected @interfaces.member?(name) end |
#interfaces ⇒ Object
Returns the interfaces of the object.
426 427 428 |
# File 'lib/dbus/introspect.rb', line 426 def interfaces @interfaces.keys end |
#introspect ⇒ Object
Introspects the remote object. Allows you to find and select interfaces on the object.
442 443 444 445 446 447 |
# File 'lib/dbus/introspect.rb', line 442 def introspect # Synchronous call here. xml = @bus.introspect_data(@destination, @path) ProxyObjectFactory.introspect_into(self, xml) xml end |
#on_signal(name, &block) ⇒ Object
Registers a handler, the code block, for a signal with the given name.
456 457 458 459 460 461 462 |
# File 'lib/dbus/introspect.rb', line 456 def on_signal(name, &block) if @default_iface and has_iface?(@default_iface) @interfaces[@default_iface].on_signal(@bus, name, &block) else raise NoMethodError end end |