MCPcopy Create free account
hub / github.com/amule-project/amule / LoadLowestLevelHashs

Method LoadLowestLevelHashs

src/SHAHashSet.cpp:369–393  ·  view source on GitHub ↗

recover all low level hashs from given data. hashs are assumed to be ordered in left to right - no identifier used

Source from the content-addressed store, hash-verified

367
368// recover all low level hashs from given data. hashs are assumed to be ordered in left to right - no identifier used
369bool CAICHHashTree::LoadLowestLevelHashs(CFileDataIO* fileInput)
370{
371 if (m_nDataSize <= m_nBaseSize) { // sanity
372 // lowest level, read hash
373 m_Hash.Read(fileInput);
374 m_bHashValid = true;
375 return true;
376 } else {
377 uint64 nBlocks = m_nDataSize / m_nBaseSize + ((m_nDataSize % m_nBaseSize != 0 )? 1:0);
378 uint64 nLeft = ( ((m_bIsLeftBranch) ? nBlocks+1:nBlocks) / 2)* m_nBaseSize;
379 uint64 nRight = m_nDataSize - nLeft;
380 if (m_pLeftTree == NULL) {
381 m_pLeftTree = new CAICHHashTree(nLeft, true, (nLeft <= PARTSIZE) ? EMBLOCKSIZE : PARTSIZE);
382 } else {
383 wxASSERT( m_pLeftTree->m_nDataSize == nLeft );
384 }
385 if (m_pRightTree == NULL) {
386 m_pRightTree = new CAICHHashTree(nRight, false, (nRight <= PARTSIZE) ? EMBLOCKSIZE : PARTSIZE);
387 } else {
388 wxASSERT( m_pRightTree->m_nDataSize == nRight );
389 }
390 return m_pLeftTree->LoadLowestLevelHashs(fileInput)
391 && m_pRightTree->LoadLowestLevelHashs(fileInput);
392 }
393}
394
395
396// write the hash, specified by wHashIdent, with Data from fileInput.

Callers 1

LoadHashSetMethod · 0.80

Calls 1

ReadMethod · 0.45

Tested by

no test coverage detected