Messages acknowledgment
- Spice提供了一系列消息,用于对客户端接受的每个或多个消息进行确认。
- 为了获取确认消息,server以请求确认的频率发送SPICE_MSG_SET_ACK ,client在接收到一定数量的消息之后发送确认信息。
- 作为回应,client发送SPICE_MSGC_ACK_SYNC。
- 每当client接收到一定请求信息之后,就会发送一个SPICE_MSGC_ACK 消息。
Channel 迁移( migration)
spice 支持spice server的迁移。以下普通消息与特殊的main channel 消息用于在spice server 之间迁移channel 连接。
将这些servers视作源和目标。Main channel 用于初始化和控制迁移过程。
具体过程如下:
- server 发送SPICE_MSG_MIGRATE 消息开始channel迁移过程。
- client 收到消息,验证附加的标记:如果server请求消息刷新,client发送SPICE_MSGC_MIGRATE_FLUSH_MARK 消息给server。这个过程用于确保在进行迁移动作之前安全发送所有发送中的消息。
- 如果server请求数据迁移,client期望在server开始迁移到目标之前接收到server发送的最后一个消息。那么消息类型必须是SPICE_MSG_MIGRATE_DATA (server的消息)
- 在连接交换中会把接收的消息内容转移到目标server中
- 在这之后client替换交流的channel
- 只有在所有channel完成迁移过程之后client才可以关闭与source server的连接。
- 如果server侧要求数据转移,client将收到的SPICE_MSG_MIGRATE_DATA中的数据转移至SPICE_MSGC_MIGRATE_DATA 消息中。
Channel synchronization 通道同步
spice 提供了client侧同步通道消息执行的机制。
server发送一个SPICE_MSG_WAIT_FOR_CHANNELS 消息,包含一个需要等待的channel消息的列表。
spice client 会等所有在list中的消息被执行后再去执行其他的消息。