ruby-dbus icon indicating copy to clipboard operation
ruby-dbus copied to clipboard

Exporting object on unnamed service

Open zobar opened this issue 11 years ago • 2 comments

I'm working with the BlueZ Bluetooth API which, for some operations, requires a callback object that is exported by the client connection. If I understand correctly, the only way to export an object in ruby-dbus is through a named service, which can only be retrieved from DBus::Connection#request_service. Unfortunately, since I'm working with an unprivileged connection to the system bus, my process does not have permission to request_service.

I noticed that SystemBus has a usable Service in @service, and if I call DBus::SystemBus.instance.instance_variable_get(:@service).export(my_object) my object is exported and receives method invocations as expected. However, I'm a little bit :grimacing: about relying on instance variables like that.

Is there a recommended way of doing this?

(For reference, line 152 of this file contains the Python equivalent of the code I need.)

zobar avatar Dec 22 '13 20:12 zobar

I'm having the same issue.

meh avatar Jul 07 '14 13:07 meh

@zobar Interesting-- ran into same question when translating some BlueZ python DBus code into Ruby for a BLE peripheral application. I have control of the system (embedded Linux install-- I can create the DBus service permissions to create a named service), so it's not a show-stopper. But non-named service export would be nice to have in a clean way.

dpruessner avatar May 01 '17 21:05 dpruessner

Fixed in #135, released 0.23.0.beta1

mvidner avatar Jun 12 '23 14:06 mvidner