summaryrefslogtreecommitdiffstats
path: root/server/dispatcher.h
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.h
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.h')
-rw-r--r--server/dispatcher.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/server/dispatcher.h b/server/dispatcher.h
index 95b6bfc6..a468c58f 100644
--- a/server/dispatcher.h
+++ b/server/dispatcher.h
@@ -8,6 +8,11 @@ typedef struct Dispatcher Dispatcher;
typedef void (*dispatcher_handle_message)(void *opaque,
void *payload);
+typedef void (*dispatcher_handle_async_done)(void *opaque,
+ uint32_t message_type,
+ void *payload);
+
+
typedef struct DispatcherMessage {
size_t size;
int ack;
@@ -26,6 +31,7 @@ struct Dispatcher {
void *payload; /* allocated as max of message sizes */
size_t payload_size; /* used to track realloc calls */
void *opaque;
+ dispatcher_handle_async_done handle_async_done;
};
/*
@@ -69,6 +75,16 @@ void dispatcher_register_handler(Dispatcher *dispatcher, uint32_t message_type,
int ack);
/*
+ * dispatcher_register_async_done_callback
+ * @dispatcher: dispatcher
+ * @handler: callback on the receiver side called *after* the
+ * message callback in case ack == DISPATCHER_ASYNC.
+ */
+void dispatcher_register_async_done_callback(
+ Dispatcher *dispatcher,
+ dispatcher_handle_async_done handler);
+
+/*
* dispatcher_handle_recv_read
* @dispatcher: Dispatcher instance
*/