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); }
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); }