Example #1
0
        public static byte[] CompessWithDecompressionHelp(this byte[] value, DecompressionHelpMode mode)
        {
            var compression = new GzipBlockCompression();
            var compressed  = compression.Compress(new Block(value, 1), mode);

            return(compressed.Bytes.ToArray());
        }
Example #2
0
        public Block Compress(Block inputBlock, DecompressionHelpMode decompressionHelpMode)
        {
            if (inputBlock.Bytes.Count == 0)
            {
                return(new Block(EmptyBytes, inputBlock.Offset));
            }

            using (var memoryStream = new MemoryStream())
            {
                using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress, true))
                {
                    // ReSharper disable once AssignNullToNotNullAttribute
                    gZipStream.Write(inputBlock.Bytes.Array, inputBlock.Bytes.Offset, inputBlock.Bytes.Count);
                }

                var compressedBytes = memoryStream.ToArray();
                var buffer          = new ArraySegment <byte>(compressedBytes, 0, (int)memoryStream.Position);

                if (decompressionHelpMode == DecompressionHelpMode.BlockLengthInMimetypeSection)
                {
                    GzipHeader.FindFirst(buffer)?.SetMimetypeBytes(BitConverter.GetBytes(buffer.Count));
                }

                return(new Block(buffer, inputBlock.Offset));
            }
        }
Example #3
0
 public static byte[] CompessWithDecompressionHelp(this string text, DecompressionHelpMode mode)
 {
     return(text.ToBytes().CompessWithDecompressionHelp(mode));
 }