support seamless migration

see spice-protocol for more details
commit 3838ad140a046c4ddf42fef58c9727ecfdc09f9f
This commit is contained in:
Yonit Halperin 2012-07-02 13:23:32 +03:00
parent c6bd210ad0
commit c2f58492ad
5 changed files with 44 additions and 8 deletions

View File

@ -42,6 +42,7 @@ typedef struct {
void (*msgc_main_mouse_mode_request)(SpiceMarshaller *m, SpiceMsgcMainMouseModeRequest *msg);
void (*msgc_main_agent_start)(SpiceMarshaller *m, SpiceMsgcMainAgentStart *msg);
void (*msgc_main_agent_token)(SpiceMarshaller *m, SpiceMsgcMainAgentTokens *msg);
void (*msgc_main_migrate_dst_do_seamless)(SpiceMarshaller *m, SpiceMsgcMainMigrateDstDoSeamless *msg);
void (*msgc_display_init)(SpiceMarshaller *m, SpiceMsgcDisplayInit *msg);
void (*msgc_inputs_key_down)(SpiceMarshaller *m, SpiceMsgcKeyDown *msg);
void (*msgc_inputs_key_up)(SpiceMarshaller *m, SpiceMsgcKeyUp *msg);

View File

@ -67,7 +67,7 @@ typedef struct SpiceMsgMainMultiMediaTime {
uint32_t time;
} SpiceMsgMainMultiMediaTime;
typedef struct SpiceMsgMainMigrationBegin {
typedef struct SpiceMigrationDstInfo {
uint16_t port;
uint16_t sport;
uint32_t host_size;
@ -77,8 +77,21 @@ typedef struct SpiceMsgMainMigrationBegin {
uint8_t *pub_key_data;
uint32_t cert_subject_size;
uint8_t *cert_subject_data;
} SpiceMigrationDstInfo;
typedef struct SpiceMsgMainMigrationBegin {
SpiceMigrationDstInfo dst_info;
} SpiceMsgMainMigrationBegin;
typedef struct SpiceMsgMainMigrateBeginSeamless {
SpiceMigrationDstInfo dst_info;
uint32_t src_mig_version;
} SpiceMsgMainMigrateBeginSeamless;
typedef struct SpiceMsgcMainMigrateDstDoSeamless {
uint32_t src_version;
} SpiceMsgcMainMigrateDstDoSeamless;
typedef struct SpiceMsgMainMigrationSwitchHost {
uint16_t port;
uint16_t sport;

@ -1 +1 @@
Subproject commit c20bc58c4e44b6403b7e7a9efc4f12dee0fc100e
Subproject commit 3838ad140a046c4ddf42fef58c9727ecfdc09f9f

View File

@ -193,15 +193,19 @@ struct ChannelId {
uint8 id;
};
channel MainChannel : BaseChannel {
server:
message {
struct DstInfo {
uint16 port;
uint16 sport;
uint32 host_size;
uint8 *host_data[host_size] @zero_terminated @marshall @nonnull;
uint32 cert_subject_size;
uint8 *cert_subject_data[cert_subject_size] @zero_terminated @marshall;
} @ctype(SpiceMigrationDstInfo);
channel MainChannel : BaseChannel {
server:
message {
DstInfo dst_info;
} @ctype(SpiceMsgMainMigrationBegin) migrate_begin = 101;
Empty migrate_cancel;
@ -267,6 +271,14 @@ channel MainChannel : BaseChannel {
uint32 num_tokens;
} agent_connected_tokens;
message {
DstInfo dst_info;
uint32 src_mig_version;
} migrate_begin_seamless;
Empty migrate_dst_seamless_ack;
Empty migrate_dst_seamless_nack;
client:
message {
uint64 cache_size;
@ -293,6 +305,12 @@ channel MainChannel : BaseChannel {
} @ctype(SpiceMsgcMainAgentTokens) agent_token;
Empty migrate_end;
message {
uint32 src_version;
} migrate_dst_do_seamless;
Empty migrate_connected_seamless;
};
enum8 clip_type {

View File

@ -161,9 +161,7 @@ struct ChannelId {
uint8 id;
};
channel MainChannel : BaseChannel {
server:
message {
struct DstInfo {
uint16 port;
uint16 sport;
uint32 host_offset @zero;
@ -173,6 +171,12 @@ channel MainChannel : BaseChannel {
uint32 pub_key_size @minor(1);
uint8 host_data[host_size] @as_ptr @zero_terminated;
uint8 pub_key_data[pub_key_size] @minor(1) @as_ptr @zero_terminated;
} @ctype(SpiceMigrationDstInfo);
channel MainChannel : BaseChannel {
server:
message {
DstInfo dst_info;
} @ctype(SpiceMsgMainMigrationBegin) migrate_begin = 101;
Empty migrate_cancel;