本文整理汇总了C++中CFile::GetMasterHash方法的典型用法代码示例。如果您正苦于以下问题:C++ CFile::GetMasterHash方法的具体用法?C++ CFile::GetMasterHash怎么用?C++ CFile::GetMasterHash使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFile
的用法示例。
在下文中一共展示了CFile::GetMasterHash方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InstallMetadata
bool CTorrent::InstallMetadata()
{
CFile* pFile = GetFile();
ASSERT(m_TorrentInfo);
CPartMap* pPartMap = pFile->GetPartMap();
if(pPartMap && !CompareSubFiles(pPartMap))
{
if(pFile->GetInspector()->BadMetaData(GetHash()))
pPartMap = NULL;
else
return false;
}
if(m_pHash->Compare(pFile->GetMasterHash().data()))
pFile->SetFileName(m_TorrentInfo->GetTorrentName());
bool bOpenIO = false;
CJoinedPartMap* pJoinedParts = qobject_cast<CJoinedPartMap*>(pPartMap);
if((pPartMap == NULL && !pFile->IsComplete()) || (pJoinedParts && pJoinedParts->GetLinks().isEmpty()))
{
bOpenIO = true;
if(!pPartMap)
pFile->SetFileSize(m_TorrentInfo->GetTotalLength());
SetupPartMap();
if(!pPartMap && !pFile->IsPending())
pFile->SetFilePath();
}
LoadPieceHashes();
if(pFile->IsIncomplete() && pFile->GetMasterHash()->GetType() == HashTorrent)
pFile->CleanUpHashes();
// Note: if neo is the masterhash the IO is already opened
if(bOpenIO && !pFile->IsPending())
pFile->Resume();
return true;
}
示例2: LoadTorrentFromFile
bool CTorrent::LoadTorrentFromFile(const QByteArray& InfoHash)
{
ASSERT(m_TorrentInfo == NULL);
m_TorrentInfo = new CTorrentInfo(this);
ASSERT(m_pHash.isNull());
m_pHash = CFileHashPtr(new CFileHash(HashTorrent));
m_pHash->SetHash(InfoHash);
QString TorrentFile = QString(InfoHash.toHex()) + ".torrent";
if(m_TorrentInfo->LoadTorrentFile(theCore->m_TorrentManager->GetTorrentDir() + TorrentFile))
{
if(m_TorrentInfo->GetInfoHash() == InfoHash)
{
CFile* pFile = GetFile();
if(pFile->GetFileSize() == 0)
pFile->SetFileSize(m_TorrentInfo->GetTotalLength());
LoadPieceHashes();
if(m_TorrentInfo->IsMultiFile() && !pFile->IsMultiFile())
{
CFileHashPtr pMasterHash = pFile->GetMasterHash();
if(!pMasterHash.isNull() && pMasterHash->GetHash() == InfoHash)
{
LogLine(LOG_DEBUG | LOG_ERROR, tr("The multi file %1 is missing its proper index, restoring form torrent").arg(pFile->GetFileName()));
InstallMetadata();
}
}
if(!m_TorrentInfo->IsEmpty() && !pFile->IsComplete() && !pFile->GetPartMap())
SetupPartMap();
}
else
{
LogLine(LOG_DEBUG | LOG_ERROR, tr("The torrent file %1 contains an invalid infohash").arg(TorrentFile));
delete m_TorrentInfo;
m_TorrentInfo = new CTorrentInfo(this);
m_TorrentInfo->SetInfoHash(InfoHash);
}
}
else
m_TorrentInfo->SetInfoHash(InfoHash);
theCore->m_TorrentManager->RegisterInfoHash(m_TorrentInfo->GetInfoHash());
return true; // Note: that is always true even if we fail to load as we always wil be able to proceed one way or another
}