public override Stream Open()
{
BinaryReader reader = Parent.Reader;
switch (Compression) {
case PackageCompression.None:
return new SliceStream(reader.BaseStream, Offset, Size, closeStream: false);
case PackageCompression.Deflate:
lock (reader.BaseStream) {
reader.BaseStream.Position = Offset;
uint decompressedSize = reader.ReadUInt32();
byte[] data = new byte[decompressedSize];
Stream compressedStream = new DeflateStream(reader.BaseStream, CompressionMode.Decompress);
compressedStream.Read(data, 0, data.Length);
return new MemoryStream(data, 0, data.Length);
}
default:
throw new NotSupportedException("Unsupported or invalid compression mode " + Compression + ".");
}
}