Object
A class similar to the normal Interface used as a proxy for remote object interfaces.
Read a property.
# File lib/dbus/introspect.rb, line 411 def [](propname) self.object[PROPERTY_INTERFACE].Get(self.name, propname)[0] end
Write a property.
# File lib/dbus/introspect.rb, line 416 def []=(propname, value) self.object[PROPERTY_INTERFACE].Set(self.name, propname, value) end
Read all properties at once, as a hash.
# File lib/dbus/introspect.rb, line 421 def all_properties self.object[PROPERTY_INTERFACE].GetAll(self.name)[0] end
FIXME
# File lib/dbus/introspect.rb, line 330 def check_for_eval(s) raise RuntimeError, "invalid internal data '#{s}'" if not s.to_s =~ /^[A-Za-z0-9_]*$/ end
FIXME
# File lib/dbus/introspect.rb, line 335 def check_for_quoted_eval(s) raise RuntimeError, "invalid internal data '#{s}'" if not s.to_s =~ /^[^"]+$/ end
Defines a signal or method based on the descriptor m.
# File lib/dbus/introspect.rb, line 382 def define(m) if m.kind_of?(Method) define_method_from_descriptor(m) elsif m.kind_of?(Signal) define_signal_from_descriptor(m) end end
Defines a proxied method on the interface.
# File lib/dbus/introspect.rb, line 391 def define_method(methodname, prototype) m = Method.new(methodname) m.from_prototype(prototype) define(m) end
Defines a method on the interface from the Method descriptor m.
# File lib/dbus/introspect.rb, line 340 def define_method_from_descriptor(m) check_for_eval(m.name) check_for_quoted_eval(@name) methdef = "def #{m.name}(" methdef += (0..(m.params.size - 1)).to_a.collect { |n| "arg#{n}" }.push("&reply_handler").join(", ") methdef += %{) msg = Message.new(Message::METHOD_CALL) msg.path = @object.path msg.interface = "#{@name}" msg.destination = @object.destination msg.member = "#{m.name}" msg.sender = @object.bus.unique_name } idx = 0 m.params.each do |fpar| par = fpar.type check_for_quoted_eval(par) # This is the signature validity check Type::Parser.new(par).parse methdef += %{ msg.add_param("#{par}", arg#{idx}) } idx += 1 end methdef += " @object.bus.send_sync_or_async(msg, &reply_handler) end " singleton_class.class_eval(methdef) @methods[m.name] = m end
Defines a signal from the descriptor s.
# File lib/dbus/introspect.rb, line 377 def define_signal_from_descriptor(s) @signals[s.name] = s end
Registers a handler (code block) for a signal with name arriving over the given bus. If no block is given, the signal is unregistered.
# File lib/dbus/introspect.rb, line 399 def on_signal(bus, name, &block) mr = DBus::MatchRule.new.from_signal(self, name) if block.nil? bus.remove_match(mr) else bus.add_match(mr) { |msg| block.call(*msg.params) } end end
Generated with the Darkfish Rdoc Generator 2.