private void ChunkTranslate(DedupBasicChunkInfo chunk) { Contract.Assert(_currentBuffer != null); Contract.Assert(chunk.m_nChunkLength != 0); Contract.Assert(_currentBuffer.Value.Array != null); byte[] hash = _parent._shaHasher.ComputeHash( _currentBuffer.Value.Array, _currentBuffer.Value.Offset + (int)chunk.m_nStartChunk, (int)chunk.m_nChunkLength); _chunkCallback(new ChunkInfo(chunk.m_nStartChunk, (uint)chunk.m_nChunkLength, hash.Take(32).ToArray())); }
private void ChunkTranslate(DedupBasicChunkInfo chunk) { if (chunk.m_nStartChunk == 0 && chunk.m_nChunkLength == 0) { return; } byte[] hash; if (chunk.m_nStartChunk < _bufferFileOffset) { ulong chunkEnd = chunk.m_nStartChunk + chunk.m_nChunkLength; if (chunkEnd < _bufferFileOffset) { hash = _parent._shaHasher.ComputeHash( _lastPushBuffer.Value.Value, (int)(chunk.m_nStartChunk - _lastBufferFileOffset), (int)chunk.m_nChunkLength); } else { _parent._shaHasher.TransformBlock( _lastPushBuffer.Value.Value, (int)(chunk.m_nStartChunk - _lastBufferFileOffset), (int)(_bufferFileOffset - chunk.m_nStartChunk), null, 0); int remainingChunkBytes = (int)(chunkEnd - _bufferFileOffset); _parent._shaHasher.TransformFinalBlock( _pushBuffer.Value, 0, remainingChunkBytes); hash = _parent._shaHasher.Hash; _parent._shaHasher.Initialize(); } } else { int startOffset = (int)(chunk.m_nStartChunk - _bufferFileOffset); hash = _parent._shaHasher.ComputeHash(_pushBuffer.Value, startOffset, (int)chunk.m_nChunkLength); } if (anyChunksFound && chunk.m_nChunkLength == 0) { return; } anyChunksFound = true; _chunkCallback(new ChunkInfo(chunk.m_nStartChunk, (uint)chunk.m_nChunkLength, hash.Take(32).ToArray())); }
private void ChunkTranslate(DedupBasicChunkInfo chunk) { if (chunk.m_nStartChunk == 0 && chunk.m_nChunkLength == 0) { return; } byte[] hash = _parent._shaHasher.ComputeHash( _currentBuffer.Value.Array, _currentBuffer.Value.Offset + (int)chunk.m_nStartChunk, (int)chunk.m_nChunkLength); _chunkCallback(new ChunkInfo(chunk.m_nStartChunk, (uint)chunk.m_nChunkLength, hash.Take(32).ToArray())); }