diff options
author | Alon Levy <alevy@redhat.com> | 2011-11-07 12:01:26 +0200 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2011-11-08 16:22:21 +0200 |
commit | ca5776f40e60f5bf5c0bf19c242492c2082d3dfc (patch) | |
tree | e8a5a87a580aec0946ea82e8b62bc4abce3c5890 /server/dispatcher.c | |
parent | fff04e867c02eb5c3582f17810c1a092ce240fc6 (diff) | |
download | spice-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.c | 15 |
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; |