static void smartcard_channel_send_data(RedChannelClient *rcc, SpiceMarshaller *m, PipeItem *item, VSCMsgHeader *vheader) { spice_assert(rcc); spice_assert(vheader); red_channel_client_init_send_data(rcc, SPICE_MSG_SMARTCARD_DATA, item); spice_marshaller_add_ref(m, (uint8_t*)vheader, sizeof(VSCMsgHeader)); if (vheader->length > 0) { spice_marshaller_add_ref(m, (uint8_t*)(vheader+1), vheader->length); } }
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); } }
void spice_marshaller_add_ref_chunks(SpiceMarshaller *m, SpiceChunks *chunks) { unsigned int i; for (i = 0; i < chunks->num_chunks; i++) { spice_marshaller_add_ref(m, chunks->chunk[i].data, chunks->chunk[i].len); } }
static void spicevmc_red_channel_send_data(RedChannelClient *rcc, SpiceMarshaller *m, PipeItem *item) { SpiceVmcPipeItem *i = SPICE_CONTAINEROF(item, SpiceVmcPipeItem, base); red_channel_client_init_send_data(rcc, SPICE_MSG_SPICEVMC_DATA, item); spice_marshaller_add_ref(m, i->buf, i->buf_used); }
static void add_buf_from_info(SpiceMarshaller *m, AddBufInfo *info) { if (info->data) { spice_marshaller_add_ref(m, info->data, info->size); } }