Class DBus::RemoteObject
In: lib/dbus.rb
Parent: Object

Represents a remote object.

A RemoteObject is provided by a RemoteService on a particular Bus. RemoteObjects have member functions, and can be called like normal Ruby objects.

Methods

Public Class methods

[Source]

     # File lib/dbus.rb, line 153
153:     def initialize(service, object_path, interface)
154:       @service = service
155:       @object_path = object_path
156:       @interface = interface
157:     end

Public Instance methods

Connect the signal signal_name on this remote object to the supplied handler proc handler_proc.

[Source]

     # File lib/dbus.rb, line 161
161:     def connect_to_signal(signal_name, handler_proc)
162:       @service.get_bus.add_signal_receiver(handler_proc,
163:                                            signal_name,
164:                                            @interface,
165:                                            @service.get_service_name,
166:                                            @object_path)
167:     end

Implements magic remote method calls

[Source]

     # File lib/dbus.rb, line 170
170:     def method_missing(sym, *args)
171:       name = sym.id2name
172:       message = DBus::Binding::DBusMessage.new_method_call(@service.get_service_name,
173:                                                            @object_path,
174:                                                            @interface,
175:                                                            name)
176:       iter = message.get_iter
177:       args.each{|a| iter.append(a)}
178:       reply = @service.get_bus.get_connection.send_with_reply_and_block(message, 5000)
179:       reply_args = reply.to_a
180:       return nil if reply_args.empty?
181:       return reply_args[0] if reply_args.length == 1
182:       return reply_args
183:     end

[Validate]