summaryrefslogtreecommitdiffstats
path: root/server/red_channel.h
diff options
context:
space:
mode:
authorYonit Halperin <yhalperi@redhat.com>2011-10-09 13:13:41 +0200
committerYonit Halperin <yhalperi@redhat.com>2011-11-02 11:25:59 +0200
commitf683815ad53cc39f485ddac9770e23282ca5c340 (patch)
tree7e5955361ce1fbf47395d0e18d858c8c566fd58b /server/red_channel.h
parentc88e927fc734fdb8240d925eb9e6a87b203c5bb3 (diff)
downloadspice-f683815ad53cc39f485ddac9770e23282ca5c340.tar.gz
spice-f683815ad53cc39f485ddac9770e23282ca5c340.tar.xz
spice-f683815ad53cc39f485ddac9770e23282ca5c340.zip
server: handling semi-seamless migration in the target side
(1) not sending anything to a migrated client till we recieve SPICE_MSGC_MIGRATE_END (2) start a new client migration (handle client_migrate_info) only after SPICE_MSGC_MIGRATE_END from the previous migration was received for this client (3) use the correct ticket Note: we assume the same channles are linked before and ater migration. i.e., SPICE_MSGC_MAIN_ATTACH_CHANNELS is not sent from the clients.
Diffstat (limited to 'server/red_channel.h')
-rw-r--r--server/red_channel.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/server/red_channel.h b/server/red_channel.h
index e30401c9..cce69658 100644
--- a/server/red_channel.h
+++ b/server/red_channel.h
@@ -450,13 +450,15 @@ struct RedClient {
pthread_t thread_id;
int disconnecting;
-
+ int migrated;
};
-RedClient *red_client_new(void);
+RedClient *red_client_new(int migrated);
MainChannelClient *red_client_get_main(RedClient *client);
// main should be set once before all the other channels are created
void red_client_set_main(RedClient *client, MainChannelClient *mcc);
+void red_client_migrate_complete(RedClient *client);
+int red_client_during_migrate_at_target(RedClient *client);
void red_client_migrate(RedClient *client);
// disconnects all the client's channels (should be called from the client's thread)