diff options
author | Alon Levy <alevy@redhat.com> | 2012-06-06 11:52:53 +0300 |
---|---|---|
committer | Jonathon Jongsma <jjongsma@redhat.com> | 2015-01-09 14:21:13 -0600 |
commit | 8f5427110088e82ecd039c3f3184ed076a68295c (patch) | |
tree | bc747dee11fe22dd07ddd4fd22a58733e9fff76c | |
parent | b3b499c5eb1ca211f0ec10f03ef2ebe230e3970a (diff) | |
download | spice-8f5427110088e82ecd039c3f3184ed076a68295c.tar.gz spice-8f5427110088e82ecd039c3f3184ed076a68295c.tar.xz spice-8f5427110088e82ecd039c3f3184ed076a68295c.zip |
server/dispatcher: add extra_dispatcher, hack for red_record
-rw-r--r-- | server/dispatcher.c | 10 | ||||
-rw-r--r-- | server/dispatcher.h | 8 |
2 files changed, 18 insertions, 0 deletions
diff --git a/server/dispatcher.c b/server/dispatcher.c index ad9726b2..e0fda1d4 100644 --- a/server/dispatcher.c +++ b/server/dispatcher.c @@ -135,6 +135,9 @@ static int dispatcher_handle_single_read(Dispatcher *dispatcher) /* TODO: close socketpair? */ return 0; } + if (dispatcher->extra_handler) { + dispatcher->extra_handler(dispatcher->opaque, type, (void *)payload); + } if (msg->handler) { msg->handler(dispatcher->opaque, type, (void *)payload); } else { @@ -223,6 +226,13 @@ void dispatcher_register_handler(Dispatcher *dispatcher, uint32_t message_type, } } +void dispatcher_register_extra_handler( + Dispatcher *dispatcher, + dispatcher_handle_message extra_handler) +{ + dispatcher->extra_handler = extra_handler; +} + #ifdef DEBUG_DISPATCHER static void dummy_handler(int bla) { diff --git a/server/dispatcher.h b/server/dispatcher.h index 85cbd26a..edf6babe 100644 --- a/server/dispatcher.h +++ b/server/dispatcher.h @@ -33,6 +33,7 @@ struct Dispatcher { size_t payload_size; /* used to track realloc calls */ void *opaque; dispatcher_handle_async_done handle_async_done; + dispatcher_handle_message extra_handler; }; /* @@ -86,6 +87,13 @@ void dispatcher_register_async_done_callback( dispatcher_handle_async_done handler); /* + * Hack to allow red_record to see the message being sent so it can record + * it to file. + */ +void dispatcher_register_extra_handler(Dispatcher *dispatcher, + dispatcher_handle_message handler); + +/* * dispatcher_handle_recv_read * @dispatcher: Dispatcher instance */ |