示例#1
0
        public void Process(DataChunk originalChunk, OrderedWriter writer)
        {
            DataChunk processed;

            using (var compressedStream = new MemoryStream(originalChunk.Data, 0, originalChunk.Size))
                using (var gzStream = new GZipStream(compressedStream, CompressionMode.Decompress))
                {
                    processed = _chunksAllocator(_decompressedBufferSize);
                    using (var decompressedStream = new MemoryStream(processed.Data))
                    {
                        gzStream.CopyTo(decompressedStream);
                        processed.Size = (int)decompressedStream.Position; // Вроде не должны выбираться за пределы int
                    }
                }

            processed.Number = originalChunk.Number;

            writer.Append(processed);
        }
示例#2
0
        public void Process(
            DataChunk originalChunk,
            OrderedWriter writer)
        {
            var processed = _chunksAllocator(originalChunk.Data.Length * 2);

            using (var memoryStream = new MemoryStream(processed.Data))
            {
                using (var gzStream = new GZipStream(memoryStream, CompressionLevel.Optimal, true))
                {
                    gzStream.Write(originalChunk.Data, 0, originalChunk.Size);
                    gzStream.Flush();
                }
                processed.Size = (int)memoryStream.Position;

                processed.Number = originalChunk.Number;
            }

            writer.Append(processed);
        }