private void DecompressBlock(IBuffer inputBlock, int number, IBuffer outputBlock, int outputBlockSize)
        {
            using (var gzipStream = new GZipStream(inputBlock.ToStream(), CompressionMode.Decompress, true))
            {
                outputBlock.FillFrom(gzipStream, outputBlockSize);
            }

            inputBlock.Return();
            blockStreamWriter.Enqueue(outputBlock, number);
        }
Пример #2
0
        private void CompressBlock(IBuffer inputBlock, int number, IBuffer outputBlock)
        {
            const int prefix = sizeof(int);
            var       stream = outputBlock.ToStream();

            stream.Position = prefix;
            using (var gzipStream = new GZipStream(stream, CompressionMode.Compress, true))
            {
                gzipStream.Write(inputBlock.ToSpan());
            }

            stream.Position = 0;
            stream.Write(BitConverter.GetBytes((int)stream.Length - prefix));

            logger.Debug($"{nameof(CompressOperationExecutor)}. Block {number}: input size {stream.Length}, output size {stream.Length - 4}");

            inputBlock.Return();
            blockStreamWriter.Enqueue(outputBlock, number);
        }