[Spice-devel] [PATCH 2/3] Use and introduce channel client cast macros

Jonathon Jongsma jjongsma at redhat.com
Mon Sep 19 15:02:34 UTC 2016


In anticipation of porting to GObject, use casting macros (e.g.
MAIN_CHANNEL_CLIENT()) to cast RedChannelClient types. This will help
reduce the changeset slightly porting to GObject and thus make it easier
to review those upcoming changes.
---
 server/cursor-channel-client.c |  4 ++--
 server/dcc.c                   |  4 ++--
 server/inputs-channel-client.c |  6 +++---
 server/inputs-channel-client.h |  2 ++
 server/inputs-channel.c        |  4 ++--
 server/main-channel-client.c   | 12 ++++++------
 server/main-channel-client.h   |  2 ++
 server/main-channel.c          | 16 ++++++++--------
 server/red-channel-client.c    | 10 +++++-----
 server/smartcard.c             | 28 +++++++++++++++-------------
 10 files changed, 47 insertions(+), 41 deletions(-)

diff --git a/server/cursor-channel-client.c b/server/cursor-channel-client.c
index bbcc290..89c23a3 100644
--- a/server/cursor-channel-client.c
+++ b/server/cursor-channel-client.c
@@ -97,14 +97,14 @@ CursorChannelClient* cursor_channel_client_new(CursorChannel *cursor, RedClient
     spice_return_val_if_fail(!num_caps || caps, NULL);
 
     CursorChannelClient *ccc =
-        (CursorChannelClient*)red_channel_client_create(sizeof(CursorChannelClient),
+        CURSOR_CHANNEL_CLIENT(red_channel_client_create(sizeof(CursorChannelClient),
                                                         RED_CHANNEL(cursor),
                                                         client, stream,
                                                         FALSE,
                                                         num_common_caps,
                                                         common_caps,
                                                         num_caps,
-                                                        caps);
+                                                        caps));
     spice_return_val_if_fail(ccc != NULL, NULL);
     COMMON_GRAPHICS_CHANNEL(cursor)->during_target_migrate = mig_target;
 
diff --git a/server/dcc.c b/server/dcc.c
index f0a1ef8..0fdce29 100644
--- a/server/dcc.c
+++ b/server/dcc.c
@@ -350,12 +350,12 @@ DisplayChannelClient *dcc_new(DisplayChannel *display,
 {
     DisplayChannelClient *dcc;
 
-    dcc = (DisplayChannelClient*)red_channel_client_create(
+    dcc = DISPLAY_CHANNEL_CLIENT(red_channel_client_create(
         sizeof(DisplayChannelClient),
         &COMMON_GRAPHICS_CHANNEL(display)->base,
         client, stream, TRUE,
         num_common_caps, common_caps,
-        num_caps, caps);
+        num_caps, caps));
 
     display->common.during_target_migrate = mig_target;
     dcc->priv->id = display->common.qxl->id;
diff --git a/server/inputs-channel-client.c b/server/inputs-channel-client.c
index a07008b..7b38625 100644
--- a/server/inputs-channel-client.c
+++ b/server/inputs-channel-client.c
@@ -46,13 +46,13 @@ RedChannelClient* inputs_channel_client_create(RedChannel *channel,
                                                uint32_t *caps)
 {
     InputsChannelClient* icc =
-        (InputsChannelClient*)red_channel_client_create(sizeof(InputsChannelClient),
+        INPUTS_CHANNEL_CLIENT(red_channel_client_create(sizeof(InputsChannelClient),
                                                         channel, client,
                                                         stream,
                                                         monitor_latency,
                                                         num_common_caps,
                                                         common_caps, num_caps,
-                                                        caps);
+                                                        caps));
     if (icc) {
         icc->priv->motion_count = 0;
     }
@@ -63,7 +63,7 @@ void inputs_channel_client_send_migrate_data(RedChannelClient *rcc,
                                              SpiceMarshaller *m,
                                              RedPipeItem *item)
 {
-    InputsChannelClient *icc = SPICE_CONTAINEROF(rcc, InputsChannelClient, base);
+    InputsChannelClient *icc = INPUTS_CHANNEL_CLIENT(rcc);
 
     red_channel_client_init_send_data(rcc, SPICE_MSG_MIGRATE_DATA, item);
 
diff --git a/server/inputs-channel-client.h b/server/inputs-channel-client.h
index e83cc29..82dbbaf 100644
--- a/server/inputs-channel-client.h
+++ b/server/inputs-channel-client.h
@@ -45,4 +45,6 @@ enum {
     RED_PIPE_ITEM_MIGRATE_DATA,
 };
 
+#define INPUTS_CHANNEL_CLIENT(rcc) ((InputsChannelClient*)rcc)
+
 #endif /* _INPUTS_CHANNEL_CLIENT_H_ */
diff --git a/server/inputs-channel.c b/server/inputs-channel.c
index 2738be4..840d5e9 100644
--- a/server/inputs-channel.c
+++ b/server/inputs-channel.c
@@ -273,7 +273,7 @@ static int inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, ui
                                         void *message)
 {
     InputsChannel *inputs_channel = (InputsChannel *)red_channel_client_get_channel(rcc);
-    InputsChannelClient *icc = (InputsChannelClient *)rcc;
+    InputsChannelClient *icc = INPUTS_CHANNEL_CLIENT(rcc);
     uint32_t i;
     RedsState *reds = red_channel_get_server(&inputs_channel->base);
 
@@ -547,7 +547,7 @@ static int inputs_channel_handle_migrate_data(RedChannelClient *rcc,
                                               uint32_t size,
                                               void *message)
 {
-    InputsChannelClient *icc = (InputsChannelClient*)rcc;
+    InputsChannelClient *icc = INPUTS_CHANNEL_CLIENT(rcc);
     InputsChannel *inputs = (InputsChannel*)red_channel_client_get_channel(rcc);
     SpiceMigrateDataHeader *header;
     SpiceMigrateDataInputs *mig_data;
diff --git a/server/main-channel-client.c b/server/main-channel-client.c
index 236a2e7..693e832 100644
--- a/server/main-channel-client.c
+++ b/server/main-channel-client.c
@@ -384,7 +384,7 @@ void main_channel_client_handle_migrate_dst_do_seamless(MainChannelClient *mcc,
 void main_channel_client_handle_pong(MainChannelClient *mcc, SpiceMsgPing *ping, uint32_t size)
 {
     uint64_t roundtrip;
-    RedChannelClient* rcc = (RedChannelClient*)mcc;
+    RedChannelClient* rcc = RED_CHANNEL_CLIENT(mcc);
 
     roundtrip = g_get_monotonic_time() - ping->timestamp;
 
@@ -559,10 +559,10 @@ MainChannelClient *main_channel_client_create(MainChannel *main_chan, RedClient
                                               int num_common_caps, uint32_t *common_caps,
                                               int num_caps, uint32_t *caps)
 {
-    MainChannelClient *mcc = (MainChannelClient*)
+    MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(
                              red_channel_client_create(sizeof(MainChannelClient), &main_chan->base,
                                                        client, stream, FALSE, num_common_caps,
-                                                       common_caps, num_caps, caps);
+                                                       common_caps, num_caps, caps));
     spice_assert(mcc != NULL);
     mcc->priv->connection_id = connection_id;
     mcc->priv->bitrate_per_sec = ~0;
@@ -599,7 +599,7 @@ uint64_t main_channel_client_get_roundtrip_ms(MainChannelClient *mcc)
 void main_channel_client_migrate(RedChannelClient *rcc)
 {
     RedChannel *channel = red_channel_client_get_channel(rcc);
-    reds_on_main_channel_migrate(channel->reds, SPICE_CONTAINEROF(rcc, MainChannelClient, base));
+    reds_on_main_channel_migrate(channel->reds, MAIN_CHANNEL_CLIENT(rcc));
     red_channel_client_default_migrate(rcc);
 }
 
@@ -671,7 +671,7 @@ static void main_channel_marshall_ping(RedChannelClient *rcc,
                                        SpiceMarshaller *m,
                                        RedPingPipeItem *item)
 {
-    MainChannelClient *mcc = (MainChannelClient*)rcc;
+    MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
     SpiceMsgPing ping;
     int size_left = item->size;
 
@@ -870,7 +870,7 @@ static void main_channel_marshall_agent_connected(SpiceMarshaller *m,
 
 void main_channel_client_send_item(RedChannelClient *rcc, RedPipeItem *base)
 {
-    MainChannelClient *mcc = SPICE_CONTAINEROF(rcc, MainChannelClient, base);
+    MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
     SpiceMarshaller *m = red_channel_client_get_marshaller(rcc);
 
     /* In semi-seamless migration (dest side), the connection is started from scratch, and
diff --git a/server/main-channel-client.h b/server/main-channel-client.h
index 9f05af3..3bb8729 100644
--- a/server/main-channel-client.h
+++ b/server/main-channel-client.h
@@ -105,4 +105,6 @@ typedef struct MainMultiMediaTimeItemInfo {
 RedPipeItem *main_multi_media_time_item_new(RedChannelClient *rcc,
                                             void *data, int num);
 
+#define MAIN_CHANNEL_CLIENT(rcc) ((MainChannelClient*)rcc)
+
 #endif /* __MAIN_CHANNEL_CLIENT_H__ */
diff --git a/server/main-channel.c b/server/main-channel.c
index 4670315..d176498 100644
--- a/server/main-channel.c
+++ b/server/main-channel.c
@@ -48,7 +48,7 @@ RedClient *main_channel_get_client_by_link_id(MainChannel *main_chan, uint32_t c
     RedChannelClient *rcc;
 
     FOREACH_CLIENT(main_chan, link, next, rcc) {
-        MainChannelClient *mcc = (MainChannelClient*) rcc;
+        MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
         if (main_channel_client_get_connection_id(mcc) == connection_id) {
             return red_channel_client_get_client(rcc);
         }
@@ -102,7 +102,7 @@ static int main_channel_handle_migrate_data(RedChannelClient *rcc,
     uint32_t size, void *message)
 {
     RedChannel *channel = red_channel_client_get_channel(rcc);
-    MainChannelClient *mcc = (MainChannelClient*)rcc;
+    MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
     SpiceMigrateDataHeader *header = (SpiceMigrateDataHeader *)message;
 
     /* not supported with multi-clients */
@@ -157,7 +157,7 @@ static int main_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, uint
 {
     RedChannel *channel = red_channel_client_get_channel(rcc);
     MainChannel *main_chan = SPICE_CONTAINEROF(channel, MainChannel, base);
-    MainChannelClient *mcc = (MainChannelClient*)rcc;
+    MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
 
     switch (type) {
     case SPICE_MSGC_MAIN_AGENT_START: {
@@ -226,7 +226,7 @@ static uint8_t *main_channel_alloc_msg_rcv_buf(RedChannelClient *rcc,
 {
     RedChannel *channel = red_channel_client_get_channel(rcc);
     MainChannel *main_chan = SPICE_CONTAINEROF(channel, MainChannel, base);
-    MainChannelClient *mcc = (MainChannelClient*)rcc;
+    MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
 
     if (type == SPICE_MSGC_MAIN_AGENT_DATA) {
         return reds_get_agent_data_buffer(channel->reds, mcc, size);
@@ -338,7 +338,7 @@ static int main_channel_connect_semi_seamless(MainChannel *main_channel)
     RedChannelClient *rcc;
 
     FOREACH_CLIENT(main_channel, link, next, rcc) {
-        MainChannelClient *mcc = (MainChannelClient*)rcc;
+        MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
         if (main_channel_client_connect_semi_seamless(mcc))
             main_channel->num_clients_mig_wait++;
     }
@@ -353,7 +353,7 @@ static int main_channel_connect_seamless(MainChannel *main_channel)
     spice_assert(g_list_length(main_channel->base.clients) == 1);
 
     FOREACH_CLIENT(main_channel, link, next, rcc) {
-        MainChannelClient *mcc = (MainChannelClient*)rcc;
+        MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
         main_channel_client_connect_seamless(mcc);
         main_channel->num_clients_mig_wait++;
     }
@@ -393,7 +393,7 @@ void main_channel_migrate_cancel_wait(MainChannel *main_chan)
     RedChannelClient *rcc;
 
     FOREACH_CLIENT(main_chan, link, next, rcc) {
-        MainChannelClient *mcc = (MainChannelClient*)rcc;
+        MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
         main_channel_client_migrate_cancel_wait(mcc);
     }
     main_chan->num_clients_mig_wait = 0;
@@ -413,7 +413,7 @@ int main_channel_migrate_src_complete(MainChannel *main_chan, int success)
     }
 
     FOREACH_CLIENT(main_chan, link, next, rcc) {
-        MainChannelClient *mcc = (MainChannelClient*)rcc;
+        MainChannelClient *mcc = MAIN_CHANNEL_CLIENT(rcc);
         if (main_channel_client_migrate_src_complete(mcc, success))
             semi_seamless_count++;
    }
diff --git a/server/red-channel-client.c b/server/red-channel-client.c
index 50b295c..8ec2d7c 100644
--- a/server/red-channel-client.c
+++ b/server/red-channel-client.c
@@ -128,7 +128,7 @@ void red_channel_client_on_input(void *opaque, int n)
 
 int red_channel_client_get_out_msg_size(void *opaque)
 {
-    RedChannelClient *rcc = (RedChannelClient *)opaque;
+    RedChannelClient *rcc = RED_CHANNEL_CLIENT(opaque);
 
     return rcc->priv->send_data.size;
 }
@@ -136,7 +136,7 @@ int red_channel_client_get_out_msg_size(void *opaque)
 void red_channel_client_prepare_out_msg(void *opaque, struct iovec *vec,
                                         int *vec_size, int pos)
 {
-    RedChannelClient *rcc = (RedChannelClient *)opaque;
+    RedChannelClient *rcc = RED_CHANNEL_CLIENT(opaque);
 
     *vec_size = spice_marshaller_fill_iovec(rcc->priv->send_data.marshaller,
                                             vec, IOV_MAX, pos);
@@ -144,7 +144,7 @@ void red_channel_client_prepare_out_msg(void *opaque, struct iovec *vec,
 
 void red_channel_client_on_out_block(void *opaque)
 {
-    RedChannelClient *rcc = (RedChannelClient *)opaque;
+    RedChannelClient *rcc = RED_CHANNEL_CLIENT(opaque);
 
     rcc->priv->send_data.blocked = TRUE;
     rcc->priv->channel->core->watch_update_mask(rcc->priv->stream->watch,
@@ -313,7 +313,7 @@ static void red_channel_client_restore_main_sender(RedChannelClient *rcc)
 
 void red_channel_client_on_out_msg_done(void *opaque)
 {
-    RedChannelClient *rcc = (RedChannelClient *)opaque;
+    RedChannelClient *rcc = RED_CHANNEL_CLIENT(opaque);
     int fd;
 
     rcc->priv->send_data.size = 0;
@@ -529,7 +529,7 @@ void red_channel_client_start_connectivity_monitoring(RedChannelClient *rcc, uin
 
 static void red_channel_client_event(int fd, int event, void *data)
 {
-    RedChannelClient *rcc = (RedChannelClient *)data;
+    RedChannelClient *rcc = RED_CHANNEL_CLIENT(data);
 
     red_channel_client_ref(rcc);
     if (event & SPICE_WATCH_EVENT_READ) {
diff --git a/server/smartcard.c b/server/smartcard.c
index 3ea8a25..41dc106 100644
--- a/server/smartcard.c
+++ b/server/smartcard.c
@@ -66,6 +66,8 @@ typedef struct SmartCardChannelClient {
     SmartCardChannelClientPrivate priv[1];
 } SmartCardChannelClient;
 
+#define SMARTCARD_CHANNEL_CLIENT(rcc) ((SmartCardChannelClient*)rcc)
+
 G_DEFINE_TYPE(RedCharDeviceSmartcard, red_char_device_smartcard, RED_TYPE_CHAR_DEVICE)
 
 #define RED_CHAR_DEVICE_SMARTCARD_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), RED_TYPE_CHAR_DEVICE_SMARTCARD, RedCharDeviceSmartcardPrivate))
@@ -387,7 +389,7 @@ static uint8_t *smartcard_channel_alloc_msg_rcv_buf(RedChannelClient *rcc,
                                                     uint16_t type,
                                                     uint32_t size)
 {
-    SmartCardChannelClient *scc = SPICE_CONTAINEROF(rcc, SmartCardChannelClient, base);
+    SmartCardChannelClient *scc = SMARTCARD_CHANNEL_CLIENT(rcc);
 
     /* todo: only one reader is actually supported. When we fix the code to support
      * multiple readers, we will porbably associate different devices to
@@ -420,7 +422,7 @@ static void smartcard_channel_release_msg_rcv_buf(RedChannelClient *rcc,
                                                   uint32_t size,
                                                   uint8_t *msg)
 {
-    SmartCardChannelClient *scc = SPICE_CONTAINEROF(rcc, SmartCardChannelClient, base);
+    SmartCardChannelClient *scc = SMARTCARD_CHANNEL_CLIENT(rcc);
 
     /* todo: only one reader is actually supported. When we fix the code to support
      * multiple readers, we will porbably associate different devices to
@@ -472,7 +474,7 @@ static void smartcard_channel_send_migrate_data(RedChannelClient *rcc,
     RedCharDeviceSmartcard *dev;
     SpiceMarshaller *m2;
 
-    scc = SPICE_CONTAINEROF(rcc, SmartCardChannelClient, base);
+    scc = SMARTCARD_CHANNEL_CLIENT(rcc);
     dev = scc->priv->smartcard;
     red_channel_client_init_send_data(rcc, SPICE_MSG_MIGRATE_DATA, item);
     spice_marshaller_add_uint32(m, SPICE_MIGRATE_DATA_SMARTCARD_MAGIC);
@@ -517,7 +519,7 @@ static void smartcard_channel_send_item(RedChannelClient *rcc, RedPipeItem *item
 
 static void smartcard_channel_on_disconnect(RedChannelClient *rcc)
 {
-    SmartCardChannelClient *scc = SPICE_CONTAINEROF(rcc, SmartCardChannelClient, base);
+    SmartCardChannelClient *scc = SMARTCARD_CHANNEL_CLIENT(rcc);
 
     if (scc->priv->smartcard) {
         RedCharDeviceSmartcard *dev = scc->priv->smartcard;
@@ -665,7 +667,7 @@ static int smartcard_channel_client_handle_migrate_data(RedChannelClient *rcc,
     SpiceMigrateDataHeader *header;
     SpiceMigrateDataSmartcard *mig_data;
 
-    scc = SPICE_CONTAINEROF(rcc, SmartCardChannelClient, base);
+    scc = SMARTCARD_CHANNEL_CLIENT(rcc);
     header = (SpiceMigrateDataHeader *)message;
     mig_data = (SpiceMigrateDataSmartcard *)(header + 1);
     if (size < sizeof(SpiceMigrateDataHeader) + sizeof(SpiceMigrateDataSmartcard)) {
@@ -706,7 +708,7 @@ static int smartcard_channel_handle_message(RedChannelClient *rcc,
                                             uint8_t *msg)
 {
     VSCMsgHeader* vheader = (VSCMsgHeader*)msg;
-    SmartCardChannelClient *scc = SPICE_CONTAINEROF(rcc, SmartCardChannelClient, base);
+    SmartCardChannelClient *scc = SMARTCARD_CHANNEL_CLIENT(rcc);
 
     if (type != SPICE_MSGC_SMARTCARD_DATA) {
         /* Handles seamless migration protocol. Also handles ack's,
@@ -760,13 +762,13 @@ static void smartcard_connect_client(RedChannel *channel, RedClient *client,
 
     SmartCardChannelClient *scc;
 
-    scc = (SmartCardChannelClient *)red_channel_client_create(sizeof(SmartCardChannelClient),
-                                                              channel,
-                                                              client,
-                                                              stream,
-                                                              FALSE,
-                                                              num_common_caps, common_caps,
-                                                              num_caps, caps);
+    scc = SMARTCARD_CHANNEL_CLIENT(red_channel_client_create(sizeof(SmartCardChannelClient),
+                                                             channel,
+                                                             client,
+                                                             stream,
+                                                             FALSE,
+                                                             num_common_caps, common_caps,
+                                                             num_caps, caps));
     if (!scc) {
         return;
     }
-- 
2.7.4



More information about the Spice-devel mailing list