[Spice-devel] [PATCH spice-server v2 2/3] Dispatcher: typedef enum for dispatcher flags

Christophe Fergeau cfergeau at redhat.com
Wed Sep 6 09:24:13 UTC 2017


Acked-by: Christophe Fergeau <cfergeau at redhat.com>

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 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
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list