// this will eventually disappear once we fully migrate to System.Memory public static GapStream CreateWriter( Stream nakedStream, CompressionMethod compressionMethod, bool leaveNakedOpen) { Stream dest; switch (compressionMethod) { case CompressionMethod.Gzip: dest = new GZipStream(nakedStream, CompressionLevel.Optimal, leaveNakedOpen); leaveNakedOpen = false; break; case CompressionMethod.Snappy: dest = new SnappyInMemoryStream(nakedStream, CompressionMode.Compress); leaveNakedOpen = false; break; case CompressionMethod.None: dest = nakedStream; break; default: throw new NotImplementedException($"unknown compression method {compressionMethod}"); } return(new GapStream(dest, leaveOpen: leaveNakedOpen)); }
public void Compress_decompress_random_byte_chunks() { byte[] stage1 = RandomGenerator.GetRandomBytes(2, 1000); byte[] stage2; byte[] stage3; using (var source = new MemoryStream()) { using (var snappy = new SnappyInMemoryStream(source, CompressionMode.Compress)) { snappy.Write(stage1, 0, stage1.Length); snappy.MarkWriteFinished(); } stage2 = source.ToArray(); } using (var source = new MemoryStream(stage2)) { using (var snappy = new SnappyInMemoryStream(source, CompressionMode.Decompress)) { using (var ms = new MemoryStream()) { snappy.CopyTo(ms); stage3 = ms.ToArray(); } } } // validate Assert.Equal(stage1, stage3); }
// this will eventually disappear once we fully migrate to System.Memory public static GapStream CreateWriter( Stream nakedStream, CompressionMethod compressionMethod, int compressionLevel, bool leaveNakedOpen) { Stream dest; /*#if !NET14 * nakedStream = new BufferedStream(nakedStream); //optimise writer performance #endif*/ switch (compressionMethod) { case CompressionMethod.Gzip: dest = new GZipStream(nakedStream, ToGzipCompressionLevel(compressionLevel), leaveNakedOpen); leaveNakedOpen = false; break; case CompressionMethod.Snappy: dest = new SnappyInMemoryStream(nakedStream, CompressionMode.Compress); leaveNakedOpen = false; break; case CompressionMethod.None: dest = nakedStream; break; default: throw new NotImplementedException($"unknown compression method {compressionMethod}"); } return(new GapStream(dest, leaveOpen: leaveNakedOpen)); }
#pragma warning disable xUnit1026 // Theory methods should use all of their parameters public void Compress_decompress_random_byte_chunks(int index) #pragma warning restore xUnit1026 // Theory methods should use all of their parameters { byte[] stage1 = RandomGenerator.GetRandomBytes(2, 1000); byte[] stage2; byte[] stage3; using (var source = new MemoryStream()) { using (var snappy = new SnappyInMemoryStream(source, CompressionMode.Compress)) { snappy.Write(stage1, 0, stage1.Length); snappy.MarkWriteFinished(); } stage2 = source.ToArray(); } using (var source = new MemoryStream(stage2)) { using (var snappy = new SnappyInMemoryStream(source, CompressionMode.Decompress)) { using (var ms = new MemoryStream()) { snappy.CopyTo(ms); stage3 = ms.ToArray(); } } } // validate Assert.Equal(stage1, stage3); }
public static Stream CreateReader(Stream nakedStream, CompressionMethod compressionMethod, long knownLength) { Stream dest = nakedStream; switch (compressionMethod) { case CompressionMethod.Gzip: dest = new GZipStream(nakedStream, CompressionMode.Decompress, false); break; case CompressionMethod.Snappy: dest = new SnappyInMemoryStream(nakedStream, CompressionMode.Decompress); break; case CompressionMethod.None: dest = nakedStream; break; default: throw new NotImplementedException($"unknown compression method {compressionMethod}"); } return(new GapStream(dest, knownLength)); }