void CLocalSearch::CreatePacket(int nCount) { ASSERT( m_pPacket == NULL ); if ( m_nProtocol == PROTOCOL_G1 ) CreatePacketG1( nCount ); else CreatePacketG2(); if ( m_pSchemas.GetCount() ) GetXMLString(); }
CPacket* CLocalSearch::CreatePacket() { switch ( m_nProtocol ) { case PROTOCOL_G1: return static_cast< CPacket* >( CreatePacketG1() ); case PROTOCOL_G2: return static_cast< CPacket* >( CreatePacketG2() ); case PROTOCOL_DC: return static_cast< CPacket* >( CreatePacketDC() ); default: ASSERT( FALSE ); } return NULL; }
int CLocalSearch::ExecutePartialFiles(int nMaximum) { ASSERT( m_nProtocol == PROTOCOL_G2 ); ASSERT( m_pSearch != NULL ); if ( m_pSearch->m_bTiger == FALSE && m_pSearch->m_bSHA1 == FALSE && m_pSearch->m_bED2K == FALSE && m_pSearch->m_bBTH == FALSE ) return 0; CSingleLock pLock( &Transfers.m_pSection ); if ( ! pLock.Lock( 50 ) ) return 0; int nCount = 0; m_pPacket = NULL; for ( POSITION pos = Downloads.GetIterator() ; pos ; ) { CDownload* pDownload = Downloads.GetNext( pos ); if ( ! pDownload->IsShared() ) continue; if ( ( m_pSearch->m_bTiger && pDownload->m_bTiger && m_pSearch->m_pTiger == pDownload->m_pTiger ) || ( m_pSearch->m_bSHA1 && pDownload->m_bSHA1 && m_pSearch->m_pSHA1 == pDownload->m_pSHA1 ) || ( m_pSearch->m_bED2K && pDownload->m_bED2K && m_pSearch->m_pED2K == pDownload->m_pED2K ) || ( m_pSearch->m_bBTH && pDownload->m_bBTH && m_pSearch->m_pBTH == pDownload->m_pBTH ) ) { if ( pDownload->m_bBTH || pDownload->IsStarted() ) { if ( m_pPacket == NULL ) CreatePacketG2(); AddHit( pDownload, nCount++ ); } } } if ( m_pPacket != NULL ) { WriteTrailerG2(); DispatchPacket(); } return nCount; }