本文整理汇总了C++中CFileList::GetCount方法的典型用法代码示例。如果您正苦于以下问题:C++ CFileList::GetCount方法的具体用法?C++ CFileList::GetCount怎么用?C++ CFileList::GetCount使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFileList
的用法示例。
在下文中一共展示了CFileList::GetCount方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WhatsNew
CFileList* CLibraryMaps::WhatsNew(const CQuerySearch* pSearch, int nMaximum) const
{
ASSUME_LOCK( Library.m_pSection );
const DWORD tNow = static_cast< DWORD >( time( NULL ) );
CFileList* pHits = NULL;
for ( POSITION pos = GetFileIterator() ; pos ; )
{
CLibraryFile* pFile = GetNextFile( pos );
if ( pFile->IsAvailable() && pFile->IsShared() && pFile->m_oSHA1 &&
( ! pSearch->m_pSchema || pSearch->m_pSchema->Equals( pFile->m_pSchema ) ) )
{
const DWORD nTime = pFile->GetCreationTime();
if ( nTime && nTime + 12 * 60 * 60 > tNow ) // 12 hours
{
pFile->m_nHitsToday++;
pFile->m_nHitsTotal++;
if ( ! pHits )
pHits = new CFileList;
pHits->AddTail( pFile );
if ( nMaximum && pHits->GetCount() >= nMaximum )
break;
}
}
}
return pHits;
}
示例2: ExecuteSharedFiles
bool CLocalSearch::ExecuteSharedFiles(INT_PTR nMaximum, INT_PTR& nHits)
{
CSingleLock oLock( &Library.m_pSection );
if ( ! oLock.Lock( 250 ) )
return false;
auto_ptr< CFileList > pFiles( Library.Search(
m_pSearch, nMaximum, FALSE,
// Ghost files only for G2
m_nProtocol != PROTOCOL_G2 ) );
if ( pFiles.get() )
{
CFileList oFilesInPacket;
for ( POSITION pos = pFiles->GetHeadPosition() ;
pos && ( ! nMaximum || ( nHits + oFilesInPacket.GetCount() < nMaximum ) ); )
{
CLibraryFile* pFile = pFiles->GetNext( pos );
if ( IsValidForHit( pFile ) )
{
oFilesInPacket.AddTail( pFile );
}
}
SendHits( oFilesInPacket );
nHits += oFilesInPacket.GetCount();
}
// Is it a browser request?
if ( ! m_pSearch && m_nProtocol == PROTOCOL_G2 )
{
// Send virtual tree
DispatchPacket( AlbumToPacket( Library.GetAlbumRoot() ) );
// Send physical tree
DispatchPacket( FoldersToPacket() );
}
return true;
}
示例3: Browse
CFileList* CLibraryMaps::Browse(int nMaximum) const
{
ASSUME_LOCK( Library.m_pSection );
CFileList* pHits = NULL;
for ( POSITION pos = GetFileIterator() ; pos ; )
{
CLibraryFile* pFile = GetNextFile( pos );
if ( pFile->IsAvailable() && pFile->IsShared() && pFile->m_oSHA1 )
{
if ( ! pHits )
pHits = new CFileList;
pHits->AddTail( pFile );
if ( nMaximum && pHits->GetCount() >= nMaximum )
break;
}
}
return pHits;
}
示例4: LookupFilesByHash
CFileList* CLibraryMaps::LookupFilesByHash(const CPeerProjectFile* pFilter, BOOL bSharedOnly, BOOL bAvailableOnly, int nMaximum) const
{
CQuickLock oLock( Library.m_pSection );
CFileList* pFiles = NULL;
if ( pFilter->m_oSHA1 )
{
for ( CLibraryFile* pFile = m_pSHA1Map[ pFilter->m_oSHA1[ 0 ] & HASH_MASK ] ;
pFile ; pFile = pFile->m_pNextSHA1 )
{
if ( validAndEqual( pFile->m_oSHA1, pFilter->m_oSHA1 ) &&
*pFile == *pFilter &&
pFile->CheckFileAttributes( pFilter->m_nSize, bSharedOnly, bAvailableOnly ) )
{
if ( ! pFiles )
pFiles = new CFileList;
if ( pFiles->Find( pFile ) == NULL )
{
if ( bSharedOnly )
{
pFile->m_nHitsToday++;
pFile->m_nHitsTotal++;
}
pFiles->AddTail( pFile );
if ( nMaximum && pFiles->GetCount() >= nMaximum )
break;
}
}
}
return pFiles;
}
if ( pFilter->m_oED2K )
{
for ( CLibraryFile* pFile = m_pED2KMap[ pFilter->m_oED2K[ 0 ] & HASH_MASK ] ;
pFile ; pFile = pFile->m_pNextED2K )
{
if ( validAndEqual( pFile->m_oED2K, pFilter->m_oED2K ) &&
*pFile == *pFilter &&
pFile->CheckFileAttributes( pFilter->m_nSize, bSharedOnly, bAvailableOnly ) )
{
if ( ! pFiles )
pFiles = new CFileList;
if ( pFiles->Find( pFile ) == NULL )
{
if ( bSharedOnly )
{
pFile->m_nHitsToday++;
pFile->m_nHitsTotal++;
}
pFiles->AddTail( pFile );
if ( nMaximum && pFiles->GetCount() >= nMaximum )
return pFiles;
}
}
}
return pFiles;
}
if ( pFilter->m_oTiger )
{
for ( CLibraryFile* pFile = m_pTigerMap[ pFilter->m_oTiger[ 0 ] & HASH_MASK ] ;
pFile ; pFile = pFile->m_pNextTiger )
{
if ( validAndEqual( pFile->m_oTiger, pFilter->m_oTiger ) &&
*pFile == *pFilter &&
pFile->CheckFileAttributes( pFilter->m_nSize, bSharedOnly, bAvailableOnly ) )
{
if ( ! pFiles )
pFiles = new CFileList;
if ( pFiles->Find( pFile ) == NULL )
{
if ( bSharedOnly )
{
pFile->m_nHitsToday++;
pFile->m_nHitsTotal++;
}
pFiles->AddTail( pFile );
if ( nMaximum && pFiles->GetCount() >= nMaximum )
break;
}
}
}
return pFiles;
}
if ( pFilter->m_oBTH )
{
for ( CLibraryFile* pFile = m_pBTHMap[ pFilter->m_oBTH[ 0 ] & HASH_MASK ] ;
pFile ; pFile = pFile->m_pNextBTH )
{
if ( validAndEqual( pFile->m_oBTH, pFilter->m_oBTH ) &&
*pFile == *pFilter &&
pFile->CheckFileAttributes( pFilter->m_nSize, bSharedOnly, bAvailableOnly ) )
{
if ( ! pFiles )
//.........这里部分代码省略.........
示例5: Search
CFileList* CLibraryDictionary::Search(const CQuerySearch* pSearch, const int nMaximum, const bool bLocal, const bool bAvailableOnly)
{
ASSUME_LOCK( Library.m_pSection );
if ( ! m_bValid )
{
BuildHashTable();
if ( ! m_bValid )
return NULL;
}
// Only check the hash when a search comes from other client.
if ( ! bLocal && ! m_pTable->Check( pSearch ) )
return NULL;
++m_nSearchCookie;
CLibraryFile* pHit = NULL;
CQuerySearch::const_iterator pWordEntry = pSearch->begin();
const CQuerySearch::const_iterator pLastWordEntry = pSearch->end();
for ( ; pWordEntry != pLastWordEntry; ++pWordEntry )
{
if ( pWordEntry->first[ 0 ] == L'-' )
continue;
CString strWord( pWordEntry->first, static_cast< int >( pWordEntry->second ) );
CFileList* pList = NULL;
if ( m_oWordMap.Lookup( strWord, pList ) )
{
for ( POSITION pos = pList->GetHeadPosition(); pos; )
{
CLibraryFile* pFile = pList->GetNext( pos );
if ( bAvailableOnly && ! pFile->IsAvailable() )
continue;
if ( ! bLocal && ! pFile->IsShared() )
continue;
if ( pFile->m_nSearchCookie == m_nSearchCookie )
{
++pFile->m_nSearchWords;
}
else
{
pFile->m_nSearchCookie = m_nSearchCookie;
pFile->m_nSearchWords = 1;
pFile->m_pNextHit = pHit;
pHit = pFile;
}
}
}
}
size_t nLowerBound = ( pSearch->tableSize() >= 3 ) ?
( pSearch->tableSize() * 2 / 3 ) : pSearch->tableSize();
CFileList* pHits = NULL;
for ( ; pHit; pHit = pHit->m_pNextHit )
{
ASSERT( pHit->m_nSearchCookie == m_nSearchCookie );
if ( pHit->m_nSearchWords < nLowerBound )
continue;
if ( pSearch->Match( pHit->GetSearchName(),
pHit->m_pSchema ? (LPCTSTR)pHit->m_pSchema->GetURI() : NULL,
pHit->m_pMetadata, pHit ) )
{
if ( ! pHits )
pHits = new CFileList;
pHits->AddTail( pHit );
if ( ! bLocal )
{
pHit->m_nHitsToday ++;
pHit->m_nHitsTotal ++;
}
if ( pHit->m_nCollIndex )
{
CLibraryFile* pCollection = LibraryMaps.LookupFile( pHit->m_nCollIndex, ! bLocal, bAvailableOnly );
if ( pCollection )
{
if ( pCollection->m_nSearchCookie != m_nSearchCookie )
{
pCollection->m_nSearchCookie = m_nSearchCookie;
pHits->AddHead( pCollection );
}
}
else
{
// Collection removed without deleting indexes
pHit->m_nCollIndex = 0ul;
}
}
if ( nMaximum > 0 && pHits->GetCount() >= nMaximum )
//.........这里部分代码省略.........