Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
            }
        }