protected override void BlockProcessing(IThreadBlock threadBlock) { using (GZipStream gzipStream = new GZipStream(new MemoryStream(threadBlock.buffer), CompressionMode.Decompress)) { var result = new byte[threadBlock.actualLength]; gzipStream.Read(result, 0, threadBlock.actualLength); _mtxBlocks.WaitOne(); _blocks.Add(threadBlock.blockNumber, result); _mtxBlocks.ReleaseMutex(); } _threadReady[threadBlock.threadNumber] = true; }
protected override void BlockProcessing(IThreadBlock threadBlock) { using (MemoryStream _memoryStream = new MemoryStream()) { using (GZipStream cs = new GZipStream(_memoryStream, CompressionMode.Compress)) { cs.Write(threadBlock.buffer, 0, threadBlock.actualLength); } byte[] compressedData = _memoryStream.ToArray(); byte[] compressedDataWithLength = new byte[compressedData.Length + 8]; byte[] lengthCompressed = BitConverter.GetBytes(compressedData.Length); byte[] lengthOriginal = BitConverter.GetBytes(threadBlock.actualLength); lengthCompressed.CopyTo(compressedDataWithLength, 0); lengthOriginal.CopyTo(compressedDataWithLength, 4); compressedData.CopyTo(compressedDataWithLength, 8); _mtxBlocks.WaitOne(); _blocks.Add(threadBlock.blockNumber, compressedDataWithLength); _mtxBlocks.ReleaseMutex(); } _threadReady[threadBlock.threadNumber] = true; }
protected abstract void BlockProcessing(IThreadBlock threadBlock);