static void smartcard_channel_send_migrate_data(RedChannelClient *rcc, SpiceMarshaller *m, PipeItem *item) { SmartCardChannelClient *scc; SmartCardDeviceState *state; SpiceMarshaller *m2; scc = SPICE_CONTAINEROF(rcc, SmartCardChannelClient, base); state = scc->smartcard_state; red_channel_client_init_send_data(rcc, SPICE_MSG_MIGRATE_DATA, item); spice_marshaller_add_uint32(m, SPICE_MIGRATE_DATA_SMARTCARD_MAGIC); spice_marshaller_add_uint32(m, SPICE_MIGRATE_DATA_SMARTCARD_VERSION); if (!state) { spice_char_device_state_migrate_data_marshall_empty(m); spice_marshaller_add_uint8(m, 0); spice_marshaller_add_uint32(m, 0); spice_marshaller_add_uint32(m, 0); spice_debug("null char dev state"); } else { spice_char_device_state_migrate_data_marshall(state->chardev_st, m); spice_marshaller_add_uint8(m, state->reader_added); spice_marshaller_add_uint32(m, state->buf_used); m2 = spice_marshaller_get_ptr_submarshaller(m, 0); spice_marshaller_add_ref(m2, state->buf, state->buf_used); spice_debug("reader added %d partial read size %u", state->reader_added, state->buf_used); } }
static void spicevmc_red_channel_send_migrate_data(RedChannelClient *rcc, SpiceMarshaller *m, PipeItem *item) { SpiceVmcState *state; state = SPICE_CONTAINEROF(rcc->channel, SpiceVmcState, channel); red_channel_client_init_send_data(rcc, SPICE_MSG_MIGRATE_DATA, item); spice_marshaller_add_uint32(m, SPICE_MIGRATE_DATA_SPICEVMC_MAGIC); spice_marshaller_add_uint32(m, SPICE_MIGRATE_DATA_SPICEVMC_VERSION); spice_char_device_state_migrate_data_marshall(state->chardev_st, m); }