diff options
author | Yonit Halperin <yhalperi@redhat.com> | 2011-10-09 13:13:41 +0200 |
---|---|---|
committer | Yonit Halperin <yhalperi@redhat.com> | 2011-11-02 11:25:59 +0200 |
commit | f683815ad53cc39f485ddac9770e23282ca5c340 (patch) | |
tree | 7e5955361ce1fbf47395d0e18d858c8c566fd58b /server/red_channel.h | |
parent | c88e927fc734fdb8240d925eb9e6a87b203c5bb3 (diff) | |
download | spice-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.h | 6 |
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) |