Acked-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> On Tue, Sep 05, 2017 at 01:51:04PM -0500, Jonathon Jongsma wrote: > 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@xxxxxxxxxx> > --- > 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 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel