Skype and DBus: should my client library act as a server?

Lars Hanisch dvb at flensrocker.de
Sun Mar 22 06:07:17 PDT 2015


Am 18.03.2015 um 22:05 schrieb Julien JPK:
> On 18/03/15 20:33, Simon McVittie wrote:
>> On 18/03/15 20:00, Julien JPK wrote:
>>>  - Start sending my requests from another thread.
>>
>> Threads! You had a problem, you solved it with threads, and now you have
>> two problems working in parallel :-)
>>
>> libdbus suffers greatly from having to have its own
>> a-bit-like-GLib-but-not-as-good "make C non-horrible" layer. If you are
>> not under constraints similar to dbus-daemon, I recommend avoiding libdbus.
> 
> When I read the DBus documentation, I thought that the "very low-level"
> part of libdbus was the "not recommended" piece, but I did not see that
> maintainers were actually discouraging the use of the entire API...
> 
> While the DBus website clearly states:
> 
> "It should be noted that the low-level implementation is not primarily
> designed for application authors to use."
> 
> ... I thought that library developers could still be an exception to the
> rule: "Rather, it is a basis for binding authors and a reference for
> reimplementations."
> 
> Do you mean that libdbus should only be used by developers who work very
> closely to DBus itself (developing the daemon, and other key components)
> ? Does it mean that application developers are somehow "obliged" to rely
> at least on GLib/GDBus (since all other bindings are even more
> "high-level") ? I'm a bit surprised to see that there is no "approved"
> way to program with DBus while staying at a reasonably low level of
> abstraction...

 I wrote a plugin for the vdr (http://tvdr.de/) to add a DBus interface to it
(https://github.com/flensrocker/vdr-plugin-dbus2vdr). I also started with libdbus, because I thought, like every other
lib<core-component>, that should be the lib to use. It kind of worked, but had a lot of flaws in that multi-threaded
environment, my plugin runs.

 Finally I switched to GDBus and never regret it.

 My advice: if you want to dig into DBus itself, write a new implementation, that fits your needs. But if you just want
to use DBus, use an implementation the "DBus gurus" point you to. GDBus is way more easier to use than libdbus.

Lars.


More information about the dbus mailing list