[Spice-devel] [PATCH spice-server v2 2/3] Dispatcher: typedef enum for dispatcher flags
Jonathon Jongsma
jjongsma at redhat.com
Tue Sep 5 18:51:04 UTC 2017
dispatcher_register_handler() accepts a flag value that determines
whether the message type requires an ACK or async_done handler. This
parameter was previously just an int. It is now a typedef'ed enum:
DispatcherFlag. The enum values were accordingly renamed:
DISPATCHER_* -> DISPATCHER_FLAG_*
Signed-off-by: Jonathon Jongsma <jjongsma at redhat.com>
---
server/dispatcher.c | 12 ++++-----
server/dispatcher.h | 20 +++++++--------
server/red-worker.c | 74 ++++++++++++++++++++++++++---------------------------
3 files changed, 53 insertions(+), 53 deletions(-)
diff --git a/server/dispatcher.c b/server/dispatcher.c
index 6f2c4d85e..76f5eeaf4 100644
--- a/server/dispatcher.c
+++ b/server/dispatcher.c
@@ -40,7 +40,7 @@ static void setup_dummy_signal_handler(void);
typedef struct DispatcherMessage {
size_t size;
- int ack;
+ DispatcherFlag flag;
dispatcher_handle_message handler;
} DispatcherMessage;
@@ -303,13 +303,13 @@ static int dispatcher_handle_single_read(Dispatcher *dispatcher)
} else {
spice_printerr("error: no handler for message type %d", type);
}
- if (msg->ack == DISPATCHER_ACK) {
+ if (msg->flag == DISPATCHER_FLAG_ACK) {
if (write_safe(dispatcher->priv->recv_fd,
(uint8_t*)&ack, sizeof(ack)) == -1) {
spice_printerr("error writing ack for message %d", type);
/* TODO: close socketpair? */
}
- } else if (msg->ack == DISPATCHER_ASYNC && dispatcher->priv->handle_async_done) {
+ } else if (msg->flag == DISPATCHER_FLAG_ASYNC && dispatcher->priv->handle_async_done) {
dispatcher->priv->handle_async_done(dispatcher->priv->opaque, type, payload);
}
return 1;
@@ -346,7 +346,7 @@ void dispatcher_send_message(Dispatcher *dispatcher, uint32_t message_type,
message_type);
goto unlock;
}
- if (msg->ack == DISPATCHER_ACK) {
+ if (msg->flag == DISPATCHER_FLAG_ACK) {
if (read_safe(send_fd, (uint8_t*)&ack, sizeof(ack), 1) == -1) {
spice_printerr("error: failed to read ack");
} else if (ack != ACK) {
@@ -369,7 +369,7 @@ void dispatcher_register_async_done_callback(
void dispatcher_register_handler(Dispatcher *dispatcher, uint32_t message_type,
dispatcher_handle_message handler,
- size_t size, int ack)
+ size_t size, DispatcherFlag flag)
{
DispatcherMessage *msg;
@@ -378,7 +378,7 @@ void dispatcher_register_handler(Dispatcher *dispatcher, uint32_t message_type,
msg = &dispatcher->priv->messages[message_type];
msg->handler = handler;
msg->size = size;
- msg->ack = ack;
+ msg->flag = flag;
if (msg->size > dispatcher->priv->payload_size) {
dispatcher->priv->payload = realloc(dispatcher->priv->payload, msg->size);
dispatcher->priv->payload_size = msg->size;
diff --git a/server/dispatcher.h b/server/dispatcher.h
index 97b01de9c..862fc46b9 100644
--- a/server/dispatcher.h
+++ b/server/dispatcher.h
@@ -72,11 +72,11 @@ typedef void (*dispatcher_handle_async_done)(void *opaque,
void dispatcher_send_message(Dispatcher *dispatcher, uint32_t message_type,
void *payload);
-enum {
- DISPATCHER_NONE = 0,
- DISPATCHER_ACK,
- DISPATCHER_ASYNC
-};
+typedef enum {
+ DISPATCHER_FLAG_NONE = 0,
+ DISPATCHER_FLAG_ACK,
+ DISPATCHER_FLAG_ASYNC
+} DispatcherFlag;
/*
* dispatcher_register_handler
@@ -84,16 +84,16 @@ enum {
* @messsage_type: message type
* @handler: message handler
* @size: message size. Each type has a fixed associated size.
- * @ack: One of DISPATCHER_NONE, DISPATCHER_ACK, DISPATCHER_ASYNC.
- * DISPATCHER_NONE - only send the message
- * DISPATCHER_ACK - send an ack after the message
- * DISPATCHER_ASYNC - call send an ack. This is per message type - you can't send the
+ * @flag: One of DISPATCHER_FLAG_NONE, DISPATCHER_FLAG_ACK, DISPATCHER_FLAG_ASYNC.
+ * DISPATCHER_FLAG_NONE - only send the message
+ * DISPATCHER_FLAG_ACK - send an ack after the message
+ * DISPATCHER_FLAG_ASYNC - call send an ack. This is per message type - you can't send the
* same message type with and without. Register two different
* messages if that is what you want.
*/
void dispatcher_register_handler(Dispatcher *dispatcher, uint32_t message_type,
dispatcher_handle_message handler, size_t size,
- int ack);
+ DispatcherFlag flag);
/*
* dispatcher_register_async_done_callback
diff --git a/server/red-worker.c b/server/red-worker.c
index 4d8566be7..c3f2dbfa0 100644
--- a/server/red-worker.c
+++ b/server/red-worker.c
@@ -1024,187 +1024,187 @@ static void register_callbacks(Dispatcher *dispatcher)
RED_WORKER_MESSAGE_DISPLAY_CONNECT,
handle_dev_display_connect,
sizeof(RedWorkerMessageDisplayConnect),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_DISPLAY_DISCONNECT,
handle_dev_display_disconnect,
sizeof(RedWorkerMessageDisplayDisconnect),
- DISPATCHER_ACK);
+ DISPATCHER_FLAG_ACK);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_DISPLAY_MIGRATE,
handle_dev_display_migrate,
sizeof(RedWorkerMessageDisplayMigrate),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_CURSOR_CONNECT,
handle_dev_cursor_connect,
sizeof(RedWorkerMessageCursorConnect),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_CURSOR_DISCONNECT,
handle_dev_cursor_disconnect,
sizeof(RedWorkerMessageCursorDisconnect),
- DISPATCHER_ACK);
+ DISPATCHER_FLAG_ACK);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_CURSOR_MIGRATE,
handle_dev_cursor_migrate,
sizeof(RedWorkerMessageCursorMigrate),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_UPDATE,
handle_dev_update,
sizeof(RedWorkerMessageUpdate),
- DISPATCHER_ACK);
+ DISPATCHER_FLAG_ACK);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_UPDATE_ASYNC,
handle_dev_update_async,
sizeof(RedWorkerMessageUpdateAsync),
- DISPATCHER_ASYNC);
+ DISPATCHER_FLAG_ASYNC);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_ADD_MEMSLOT,
handle_dev_add_memslot,
sizeof(RedWorkerMessageAddMemslot),
- DISPATCHER_ACK);
+ DISPATCHER_FLAG_ACK);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_ADD_MEMSLOT_ASYNC,
handle_dev_add_memslot_async,
sizeof(RedWorkerMessageAddMemslotAsync),
- DISPATCHER_ASYNC);
+ DISPATCHER_FLAG_ASYNC);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_DEL_MEMSLOT,
handle_dev_del_memslot,
sizeof(RedWorkerMessageDelMemslot),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_DESTROY_SURFACES,
handle_dev_destroy_surfaces,
sizeof(RedWorkerMessageDestroySurfaces),
- DISPATCHER_ACK);
+ DISPATCHER_FLAG_ACK);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_DESTROY_SURFACES_ASYNC,
handle_dev_destroy_surfaces_async,
sizeof(RedWorkerMessageDestroySurfacesAsync),
- DISPATCHER_ASYNC);
+ DISPATCHER_FLAG_ASYNC);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_DESTROY_PRIMARY_SURFACE,
handle_dev_destroy_primary_surface,
sizeof(RedWorkerMessageDestroyPrimarySurface),
- DISPATCHER_ACK);
+ DISPATCHER_FLAG_ACK);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_DESTROY_PRIMARY_SURFACE_ASYNC,
handle_dev_destroy_primary_surface_async,
sizeof(RedWorkerMessageDestroyPrimarySurfaceAsync),
- DISPATCHER_ASYNC);
+ DISPATCHER_FLAG_ASYNC);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_CREATE_PRIMARY_SURFACE_ASYNC,
handle_dev_create_primary_surface_async,
sizeof(RedWorkerMessageCreatePrimarySurfaceAsync),
- DISPATCHER_ASYNC);
+ DISPATCHER_FLAG_ASYNC);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_CREATE_PRIMARY_SURFACE,
handle_dev_create_primary_surface,
sizeof(RedWorkerMessageCreatePrimarySurface),
- DISPATCHER_ACK);
+ DISPATCHER_FLAG_ACK);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_RESET_IMAGE_CACHE,
handle_dev_reset_image_cache,
sizeof(RedWorkerMessageResetImageCache),
- DISPATCHER_ACK);
+ DISPATCHER_FLAG_ACK);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_RESET_CURSOR,
handle_dev_reset_cursor,
sizeof(RedWorkerMessageResetCursor),
- DISPATCHER_ACK);
+ DISPATCHER_FLAG_ACK);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_WAKEUP,
handle_dev_wakeup,
sizeof(RedWorkerMessageWakeup),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_OOM,
handle_dev_oom,
sizeof(RedWorkerMessageOom),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_START,
handle_dev_start,
sizeof(RedWorkerMessageStart),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_FLUSH_SURFACES_ASYNC,
handle_dev_flush_surfaces_async,
sizeof(RedWorkerMessageFlushSurfacesAsync),
- DISPATCHER_ASYNC);
+ DISPATCHER_FLAG_ASYNC);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_STOP,
handle_dev_stop,
sizeof(RedWorkerMessageStop),
- DISPATCHER_ACK);
+ DISPATCHER_FLAG_ACK);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_LOADVM_COMMANDS,
handle_dev_loadvm_commands,
sizeof(RedWorkerMessageLoadvmCommands),
- DISPATCHER_ACK);
+ DISPATCHER_FLAG_ACK);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_SET_COMPRESSION,
handle_dev_set_compression,
sizeof(RedWorkerMessageSetCompression),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_SET_STREAMING_VIDEO,
handle_dev_set_streaming_video,
sizeof(RedWorkerMessageSetStreamingVideo),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_SET_VIDEO_CODECS,
handle_dev_set_video_codecs,
sizeof(RedWorkerMessageSetVideoCodecs),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_SET_MOUSE_MODE,
handle_dev_set_mouse_mode,
sizeof(RedWorkerMessageSetMouseMode),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_DESTROY_SURFACE_WAIT,
handle_dev_destroy_surface_wait,
sizeof(RedWorkerMessageDestroySurfaceWait),
- DISPATCHER_ACK);
+ DISPATCHER_FLAG_ACK);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_DESTROY_SURFACE_WAIT_ASYNC,
handle_dev_destroy_surface_wait_async,
sizeof(RedWorkerMessageDestroySurfaceWaitAsync),
- DISPATCHER_ASYNC);
+ DISPATCHER_FLAG_ASYNC);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_RESET_MEMSLOTS,
handle_dev_reset_memslots,
sizeof(RedWorkerMessageResetMemslots),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_MONITORS_CONFIG_ASYNC,
handle_dev_monitors_config_async,
sizeof(RedWorkerMessageMonitorsConfigAsync),
- DISPATCHER_ASYNC);
+ DISPATCHER_FLAG_ASYNC);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_DRIVER_UNLOAD,
handle_dev_driver_unload,
sizeof(RedWorkerMessageDriverUnload),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_GL_SCANOUT,
handle_dev_gl_scanout,
sizeof(RedWorkerMessageGlScanout),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_GL_DRAW_ASYNC,
handle_dev_gl_draw_async,
sizeof(RedWorkerMessageGlDraw),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
dispatcher_register_handler(dispatcher,
RED_WORKER_MESSAGE_CLOSE_WORKER,
handle_dev_close,
sizeof(RedWorkerMessageClose),
- DISPATCHER_NONE);
+ DISPATCHER_FLAG_NONE);
}
--
2.13.3
More information about the Spice-devel
mailing list