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