non-blocking dbus server

Mat Booth fedora at matbooth.co.uk
Fri Jul 10 13:23:17 UTC 2009


On Fri, Jul 10, 2009 at 10:18 AM, Jiri Moskovcak<jmoskovc at redhat.com> wrote:
> Hi,
> in our project ABRT we use DBUS for communication between ABRT daemon and
> client (gui), the problem is that when I ask daemon to do some
> time-consuming work the server is blocked until the work is done. So I want
> to use threads and that's where I found the catch.
>
> Here is my idea:
> 1. client calls remote method foo() over dbus
> 2. daemon receives the call, creates the thread and let it do the work in
> background and serve other requests
> 3. when the work is finished send reply to the client
> - this is the part where I'm stuck, because I want to send the reply as
> return message to the matching method call, but the method call already
> returned when I started the thread. (So far I can achieve this by sending
> signal with return value as an argument, but I don't think this is a good
> solution).
>
> I use dbus-c++, so maybe the answer is in some low-level DBUS API.
>
> Thanks for any help,
> Jirka
>

Why can't you have a callback in the client that the daemon can call
when it has finished?


-- 
Mat Booth

A: Because it destroys the order of the conversation.
Q: Why shouldn't you do it?
A: Posting your reply above the original message.
Q: What is top-posting?




More information about the devel mailing list