Creating a dbus connection
Havoc Pennington
hp at redhat.com
Thu Jul 5 09:41:21 PDT 2007
Hi,
P. Durante wrote:
>> And in my program I am doing like:
>> DBus::Connection *pconn = DBus::Connection(bus_path);
>> pconn->register_connection();
>>
>> After this it is working ok.
>>
>> So I have a question, is there any other way already exist to register the
>> connection, or such function is missing and we need to add one as I did
>> above?
>
> Yes, it's a bug, as per the doc:
>
> "If you open a bus connection with dbus_connection_open() or
> dbus_connection_open_private() you will have to dbus_bus_register()
> yourself, or make the appropriate registration method calls yourself."
>
> the constructor should call it and it doesn't, this hasn't come up
> earlier because only the 'default' buses were being used.
>
I don't understand this - the docs you quoted indicate that
connection_open() will not register with the bus, which is correct,
because a DBusConnection does not have to be a connection to a bus.
So having the C++ wrapper for connection_open register isn't right either.
dbus_bus_get() does register with the bus, since it knows it's a bus.
In C++ I'd expect that to be wrapped separately and as a static or
factory method, rather than as a constructor.
Havoc
More information about the dbus
mailing list