protected override void ProtectedImport(Stream stream, BufferManager bufferManager, int depth) { using (var reader = new ItemStreamReader(stream, bufferManager)) { while (reader.Available > 0) { int id = (int)reader.GetUInt32(); if (id == (int)SerializeId.Comment) { this.Comment = reader.GetString(); } else if (id == (int)SerializeId.ExchangePublicKey) { this.ExchangePublicKey = ExchangePublicKey.Import(reader.GetStream(), bufferManager); } else if (id == (int)SerializeId.TrustSignatures) { for (int i = (int)reader.GetUInt32() - 1; i >= 0; i--) { this.ProtectedTrustSignatures.Add(Signature.Import(reader.GetStream(), bufferManager)); } } else if (id == (int)SerializeId.DeleteSignatures) { for (int i = (int)reader.GetUInt32() - 1; i >= 0; i--) { this.ProtectedDeleteSignatures.Add(Signature.Import(reader.GetStream(), bufferManager)); } } else if (id == (int)SerializeId.Tags) { for (int i = (int)reader.GetUInt32() - 1; i >= 0; i--) { this.ProtectedTags.Add(Tag.Import(reader.GetStream(), bufferManager)); } } } } }
protected override void ProtectedImport(Stream stream, BufferManager bufferManager, int count) { for (; ;) { byte id; { byte[] idBuffer = new byte[1]; if (stream.Read(idBuffer, 0, idBuffer.Length) != idBuffer.Length) { return; } id = idBuffer[0]; } int length; { byte[] lengthBuffer = new byte[4]; if (stream.Read(lengthBuffer, 0, lengthBuffer.Length) != lengthBuffer.Length) { return; } length = NetworkConverter.ToInt32(lengthBuffer); } using (RangeStream rangeStream = new RangeStream(stream, stream.Position, length, true)) { if (id == (byte)SerializeId.CreationTime) { this.CreationTime = DateTime.ParseExact(ItemUtilities.GetString(rangeStream), "yyyy-MM-ddTHH:mm:ssZ", System.Globalization.DateTimeFormatInfo.InvariantInfo).ToUniversalTime(); } else if (id == (byte)SerializeId.Cost) { this.Cost = ItemUtilities.GetInt(rangeStream); } else if (id == (byte)SerializeId.ExchangePublicKey) { this.ExchangePublicKey = ExchangePublicKey.Import(rangeStream, bufferManager); } else if (id == (byte)SerializeId.TrustSignature) { this.ProtectedTrustSignatures.Add(ItemUtilities.GetString(rangeStream)); } else if (id == (byte)SerializeId.DeleteSignature) { this.ProtectedDeleteSignatures.Add(ItemUtilities.GetString(rangeStream)); } else if (id == (byte)SerializeId.Wiki) { this.ProtectedWikis.Add(Wiki.Import(rangeStream, bufferManager)); } else if (id == (byte)SerializeId.Chat) { this.ProtectedChats.Add(Chat.Import(rangeStream, bufferManager)); } else if (id == (byte)SerializeId.Certificate) { this.Certificate = Certificate.Import(rangeStream, bufferManager); } } } }