[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