public static byte[] Decompress(this byte[] data, Internal.Packets.CompressionMode compression) { switch (compression) { case Internal.Packets.CompressionMode.Deflate: { using (MemoryStream input = new MemoryStream(data)) { using (MemoryStream output = new MemoryStream()) { using (DeflateStream dstream = new DeflateStream(input, System.IO.Compression.CompressionMode.Decompress)) { dstream.CopyTo(output); } return(output.ToArray()); } } } case Internal.Packets.CompressionMode.Gzip: { using (var compressedMs = new MemoryStream(data)) { using (var decompressedMs = new MemoryStream()) { using (var gzs = new BufferedStream(new GZipStream(compressedMs, System.IO.Compression.CompressionMode.Decompress), 64 * 1024)) { gzs.CopyTo(decompressedMs); } return(decompressedMs.ToArray()); } } } case Internal.Packets.CompressionMode.LZ4: return(LZ4Pickler.Unpickle(data)); case Internal.Packets.CompressionMode.Custom: return(OnCustomDecompression?.Invoke(data)); default: return(data); } }
public static byte[] Compress(this byte[] data, Internal.Packets.CompressionMode compression) { switch (compression) { case Internal.Packets.CompressionMode.Deflate: { using (MemoryStream output = new MemoryStream()) { using (DeflateStream dstream = new DeflateStream(output, CompressionLevel.Fastest)) { dstream.Write(data, 0, data.Length); } return(output.ToArray()); //* Copy array. } } case Internal.Packets.CompressionMode.Gzip: { using (var compressIntoMs = new MemoryStream()) { using (var gzs = new BufferedStream(new GZipStream(compressIntoMs, System.IO.Compression.CompressionMode.Compress), 64 * 1024)) { gzs.Write(data, 0, data.Length); } return(compressIntoMs.ToArray()); } } case Internal.Packets.CompressionMode.LZ4: return(LZ4Pickler.Pickle(data)); case Internal.Packets.CompressionMode.Custom: return(OnCustomCompression?.Invoke(data)); default: return(data); } }