public override Stream Open()
{
lock (Archive) {
BinaryReader reader = Archive.Reader;
reader.BaseStream.Position = Offset;
byte[] data = new byte[Size];
switch (Mode) {
case ArchiveRecordMode.Deflate:
var inflater = new ICSharpCode.SharpZipLib.Zip.Compression.Inflater();
inflater.SetInput(reader.ReadBytes(SizeCompressed), 0, SizeCompressed);
if (inflater.Inflate(data, 0, Size) != Size)
throw new InvalidDataException();
break;
case ArchiveRecordMode.Uncompressed:
if (reader.Read(data, 0, Size) != Size)
throw new InvalidDataException();
break;
default:
throw new NotSupportedException();
}
return new MemoryStream(data, false);
}
}