summaryrefslogtreecommitdiffstats
path: root/server/dispatcher.c
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2011-11-07 12:01:26 +0200
committerAlon Levy <alevy@redhat.com>2011-11-08 16:22:21 +0200
commitca5776f40e60f5bf5c0bf19c242492c2082d3dfc (patch)
treee8a5a87a580aec0946ea82e8b62bc4abce3c5890 /server/dispatcher.c
parentfff04e867c02eb5c3582f17810c1a092ce240fc6 (diff)
downloadspice-ca5776f40e60f5bf5c0bf19c242492c2082d3dfc.tar.gz
spice-ca5776f40e60f5bf5c0bf19c242492c2082d3dfc.tar.xz
spice-ca5776f40e60f5bf5c0bf19c242492c2082d3dfc.zip
server/dispatcher: add dispatcher_register_async_done_callback
Diffstat (limited to 'server/dispatcher.c')
-rw-r--r--server/dispatcher.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/server/dispatcher.c b/server/dispatcher.c
index 81abbdf3..90e46e36 100644
--- a/server/dispatcher.c
+++ b/server/dispatcher.c
@@ -126,6 +126,9 @@ static int dispatcher_handle_single_read(Dispatcher *dispatcher)
red_printf("error writing ack for message %d\n", type);
/* TODO: close socketpair? */
}
+ } else if (msg->ack == DISPATCHER_ASYNC && dispatcher->handle_async_done) {
+ dispatcher->handle_async_done(dispatcher->opaque, type,
+ (void *)payload);
}
return 1;
}
@@ -174,9 +177,17 @@ unlock:
pthread_mutex_unlock(&dispatcher->lock);
}
+void dispatcher_register_async_done_callback(
+ Dispatcher *dispatcher,
+ dispatcher_handle_async_done handler)
+{
+ assert(dispatcher->handle_async_done == NULL);
+ dispatcher->handle_async_done = handler;
+}
+
void dispatcher_register_handler(Dispatcher *dispatcher, uint32_t message_type,
- dispatcher_handle_message handler, size_t size,
- int ack)
+ dispatcher_handle_message handler,
+ size_t size, int ack)
{
DispatcherMessage *msg;