Object
A class similar to the normal Interface used as a proxy for remote object interfaces.
Read a property.
# File lib/dbus/proxy_object_interface.rb, line 113 def [](propname) self.object[PROPERTY_INTERFACE].Get(self.name, propname)[0] end
Write a property.
# File lib/dbus/proxy_object_interface.rb, line 118 def []=(propname, value) self.object[PROPERTY_INTERFACE].Set(self.name, propname, value) end
Read all properties at once, as a hash. @return [Hash{String}]
# File lib/dbus/proxy_object_interface.rb, line 124 def all_properties self.object[PROPERTY_INTERFACE].GetAll(self.name)[0] end
Defines a signal or method based on the descriptor m.
# File lib/dbus/proxy_object_interface.rb, line 79 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/proxy_object_interface.rb, line 88 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/proxy_object_interface.rb, line 43 def define_method_from_descriptor(m) m.params.each do |fpar| par = fpar.type # This is the signature validity check Type::Parser.new(par).parse end singleton_class.class_eval do define_method m.name do |*args, &reply_handler| if m.params.size != args.size raise ArgumentError, "wrong number of arguments (#{args.size} for #{m.params.size})" end 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 m.params.each do |fpar| par = fpar.type msg.add_param(par, args.shift) end @object.bus.send_sync_or_async(msg, &reply_handler) end end @methods[m.name] = m end
Defines a signal from the descriptor s.
# File lib/dbus/proxy_object_interface.rb, line 74 def define_signal_from_descriptor(s) @signals[s.name] = s end
@overload on_signal(name, &block) @overload on_signal(bus, name, &block) Registers a handler (code block) for a signal with name arriving over the given bus. If no block is given, the signal is unregistered. Note that specifying bus is discouraged and the option is kept only for backward compatibility. @return [void]
# File lib/dbus/proxy_object_interface.rb, line 101 def on_signal(bus = @object.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.