/// <summary> /// Deserialize fields from a FastTransferStream. /// </summary> /// <param name="stream">A FastTransferStream.</param> public override void Deserialize(FastTransferStream stream) { this.messageChangeTuples = new List<Tuple<ProgressPerMessage, MessageChange>>(); if (ProgressTotal.Verify(stream)) { this.progressTotal = new ProgressTotal(stream); } while (ProgressPerMessage.Verify(stream) || MessageChange.Verify(stream)) { ProgressPerMessage tmp1 = null; MessageChange tmp2 = null; if (ProgressPerMessage.Verify(stream)) { tmp1 = new ProgressPerMessage(stream); } tmp2 = MessageChange.DeserializeFrom(stream) as MessageChange; this.messageChangeTuples.Add( new Tuple<ProgressPerMessage, MessageChange>( tmp1, tmp2)); } if (Deletions.Verify(stream)) { this.deletions = new Deletions(stream); } if (ReadStateChanges.Verify(stream)) { this.readStateChanges = new ReadStateChanges(stream); } this.state = new State(stream); if (!stream.ReadMarker(Markers.PidTagIncrSyncEnd)) { AdapterHelper.Site.Assert.Fail("The stream cannot be deserialized successfully."); } }