void CUpdateServersDlg::OnTimer(UINT_PTR nIDEvent) { CSkinDialog::OnTimer( nIDEvent ); if ( m_pRequest.IsPending() ) { int n = m_wndProgress.GetPos(); if ( n < 5 ) n = 5; else if ( n < 100 ) n++; m_wndProgress.SetPos( n ); } else { KillTimer( 1 ); if ( m_pRequest.GetStatusSuccess() ) { const CString strExt = CString( PathFindExtension( m_sURL ) ).MakeLower(); if ( strExt == L".met" || m_sURL.Find( _T("//server"), 8 ) > 8 ) // || strExt == L".php" Settings.eDonkey.ServerListURL = m_sURL; else if ( strExt == L".bz2" || m_sURL.Find( _T("hublist"), 8 ) > 8 ) Settings.DC.HubListURL = m_sURL; // else if ( strExt == L".xml" ) // Settings.Gnutella.CacheURL = m_sURL; // else if ( strExt == L".dat" ) // Settings.KAD.NodesListURL = m_sURL; const CBuffer* pBuffer = m_pRequest.GetResponseBuffer(); CMemFile pFile; pFile.Write( pBuffer->m_pBuffer, pBuffer->m_nLength ); pFile.Seek( 0, CFile::begin ); if ( ( strExt == L".bz2" && HostCache.ImportHubList( &pFile ) ) || HostCache.ImportMET( &pFile ) ) // HostCache.ImportCache( &pFile ) || // ToDo: G2/Gnutella loading // HostCache.ImportNodes( &pFile ) ) // ToDo: KAD { HostCache.Save(); m_sURL.Empty(); EndDialog( IDOK ); return; } } CString strError; strError.Format( LoadString( IDS_DOWNLOAD_DROPPED ), m_sURL ); MsgBox( strError, MB_OK | MB_ICONEXCLAMATION ); m_sURL.Empty(); EndDialog( IDCANCEL ); } UpdateWindow(); }
///////////////////////////////////////////////////////////////////////////// // serialization void CGXGridCellData::SerializeEx(CArchive& ar, CString& strProperty ) { ASSERT_VALID(this); DWORD dwDataLen; if (ar.IsStoring()) // Write { CMemFile memFile; CArchive arMem(&memFile, CArchive::store ); Serialize ( arMem ); arMem.Flush(); dwDataLen = memFile.GetLength(); if ( dwDataLen > 0 ) { BYTE *pTemp = new BYTE [dwDataLen+1]; memFile.Seek(0, CFile::begin); memFile.Read(pTemp, dwDataLen ); ar.Write(&dwDataLen, sizeof(DWORD)); ar.Write(pTemp, dwDataLen); // Property Save CString strProperty = BinaryToStringEx ( pTemp, dwDataLen ); if ( pTemp ) delete []pTemp; } } else // Read { ar >> dwDataLen; if ( dwDataLen > 0 ) { BYTE *pTemp = new BYTE[dwDataLen+1]; ar.Read(pTemp, dwDataLen ); CMemFile memFile; memFile.Attach ( (BYTE*)pTemp, dwDataLen ); CArchive arMem(&memFile, CArchive::load ); Serialize ( arMem ); // Property Save CString DWORD dwTotLen = dwDataLen + sizeof(DWORD); BYTE *pvData = new BYTE[dwTotLen]; *(DWORD*)pvData = dwTotLen; memcpy ( pvData + sizeof(DWORD), pTemp, dwDataLen ); if ( pTemp ) delete[] pTemp; strProperty = BinaryToStringEx ( pvData, dwTotLen ); if ( pvData ) delete[] pvData; } } }
DWORD SupFileSubtitleProvider::ThreadProc() { CFile f; if (!f.Open(m_fname, CFile::modeRead|CFile::typeBinary|CFile::shareDenyNone)) { return 1; } f.SeekToBegin(); CMemFile sub; sub.SetLength(f.GetLength()); sub.SeekToBegin(); int len; BYTE buff[65536]; while ((len = f.Read(buff, sizeof(buff))) > 0) { sub.Write(buff, len); } sub.SeekToBegin(); WORD sync = 0; USHORT size = 0; REFERENCE_TIME rtStart = 0; CAutoLock cAutoLock(&m_csCritSec); while (sub.GetPosition() < (sub.GetLength() - 10)) { sync = (WORD)ReadByte(&sub, 2); if (sync == 'PG') { rtStart = UINT64(ReadByte(&sub, 4) * (1000 / 9)); sub.Seek(4 + 1, CFile::current); // rtStop + Segment type size = ReadByte(&sub, 2) + 3; // Segment size sub.Seek(-3, CFile::current); sub.Read(buff, size); m_pSub->ParseSample(buff, size, rtStart, 0); } else { break; } } sub.Close(); return 0; }
void CDonkeyServersDlg::OnRun() { if ( m_hInternet == NULL ) return; HINTERNET hRequest = InternetOpenUrl( m_hInternet, m_sURL, NULL, 0, INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE, 0 ); if ( hRequest == NULL ) { InternetCloseHandle( m_hInternet ); m_hInternet = NULL; PostMessage( WM_TIMER, FALSE ); return; } DWORD nLength, nlLength = 4; DWORD nRemaining = 0; BYTE pBuffer[1024]; CMemFile pFile; if ( HttpQueryInfo( hRequest, HTTP_QUERY_CONTENT_LENGTH|HTTP_QUERY_FLAG_NUMBER, &nLength, &nlLength, NULL ) ) { m_wndProgress.PostMessage( PBM_SETRANGE32, 0, nLength ); } nLength = 0; while ( InternetQueryDataAvailable( hRequest, &nRemaining, 0, 0 ) && nRemaining > 0 ) { nLength += nRemaining; m_wndProgress.PostMessage( PBM_SETPOS, nLength ); while ( nRemaining > 0 ) { DWORD nBuffer = min( nRemaining, DWORD(1024) ); InternetReadFile( hRequest, pBuffer, nBuffer, &nBuffer ); pFile.Write( pBuffer, nBuffer ); nRemaining -= nBuffer; } } pFile.Seek( 0, CFile::begin ); BOOL bSuccess = HostCache.eDonkey.ImportMET( &pFile ); if ( bSuccess ) HostCache.Save(); InternetCloseHandle( m_hInternet ); m_hInternet = NULL; PostMessage( WM_TIMER, bSuccess ? 1 : 0 ); }
void CDonkeyServersDlg::OnTimer(UINT_PTR nIDEvent) { CSkinDialog::OnTimer( nIDEvent ); if ( m_pRequest.IsPending() ) { int n = m_wndProgress.GetPos(); if ( ++n >= 100 ) n = 0; m_wndProgress.SetPos( n ); } else { KillTimer( 1 ); if ( m_pRequest.GetStatusSuccess() ) { const CBuffer* pBuffer = m_pRequest.GetResponseBuffer(); CMemFile pFile; pFile.Write( pBuffer->m_pBuffer, pBuffer->m_nLength ); pFile.Seek( 0, CFile::begin ); if ( HostCache.ImportMET( &pFile ) ) HostCache.Save(); } else { CString strError; strError.Format( LoadString( IDS_DOWNLOAD_DROPPED ), m_sURL ); AfxMessageBox( strError, MB_OK | MB_ICONEXCLAMATION ); } EndDialog( IDOK ); } UpdateWindow(); }
CString CGXGridCellData::GetMultiCaptionBlobDataChange ( ) { CString strProperty; ASSERT_VALID(this); // if ( !m_bSingleMode ) // DeleteContents(); CMemFile memFile; CArchive arMem(&memFile, CArchive::store ); Serialize ( arMem ); arMem.Flush(); DWORD dwDataLen = memFile.GetLength(); if ( dwDataLen > 0 ) { BYTE *pTemp = new BYTE [dwDataLen+1]; memFile.Seek(0, CFile::begin); memFile.Read(pTemp, dwDataLen ); DWORD dwTotLen = dwDataLen + sizeof(DWORD); BYTE *pvData = new BYTE[dwTotLen]; *(DWORD*)pvData = dwTotLen; memcpy ( pvData + sizeof(DWORD), pTemp, dwDataLen ); if ( pTemp ) delete[] pTemp; // Property Save CString strProperty = BinaryToStringEx ( pvData, dwTotLen ); if ( pvData ) delete[] pvData; } return strProperty; }
int main() { CMapStringToString map; if( !map.IsEmpty() ) _fail; if( map.GetCount() != 0 ) _fail; if( map.GetSize() != 0 ) _fail; map.SetAt( _T("0"), _T(" ") ); map.SetAt( _T("1"), _T("A") ); map.SetAt( _T("2"), _T("B") ); CString value; if( !map.Lookup( _T("0"), value ) ) _fail; if( value != _T(" ") ) _fail; if( !map.Lookup( _T("1"), value ) ) _fail; if( value != _T("A") ) _fail; if( !map.Lookup( _T("2"), value ) ) _fail; if( value != _T("B") ) _fail; if( map.Lookup( _T("3"), value ) ) _fail; POSITION position = map.GetStartPosition(); CString key; BOOL bFound0 = FALSE; BOOL bFound1 = FALSE; BOOL bFound2 = FALSE; while( position != NULL ) { map.GetNextAssoc( position, key, value ); if( key == _T("0") ) { if( bFound0 ) _fail; if( value != _T(" ") ) _fail; bFound0 = TRUE; } else if( key == _T("1") ) { if( bFound1 ) _fail; if( value != _T("A") ) _fail; bFound1 = TRUE; } else if( key == _T("2") ) { if( bFound2 ) _fail; if( value != _T("B") ) _fail; bFound2 = TRUE; } else { _fail; } } if( !bFound0 ) _fail; if( !bFound1 ) _fail; if( !bFound2 ) _fail; map.RemoveKey( _T("0") ); if( map.Lookup( _T("0"), value ) ) _fail; CMapStringToString smap1; CMapStringToString smap2; smap1[_T("0")] = _T(" "); smap1[_T("1")] = _T("A"); smap1[_T("2")] = _T("B"); CMemFile file; CArchive ar( &file, CArchive::store ); smap1.Serialize( ar ); ar.Close(); file.Seek( 0, CFile::begin ); CArchive ar2( &file, CArchive::load ); smap2.Serialize( ar2 ); ar2.Close(); if( smap2[_T("0")] != _T(" ") ) _fail; if( smap2[_T("1")] != _T("A") ) _fail; if( smap2[_T("2")] != _T("B") ) _fail; _PASS; }
int main() { CMemFile file; CArchive ar( &file, CArchive::store ); ar << TEST_BYTE; ar << TEST_WORD; ar << TEST_LONG; ar << TEST_DWORD; ar << TEST_FLOAT; ar << TEST_DOUBLE; ar << TEST_INT; ar << TEST_SHORT; ar << TEST_CHAR; ar << TEST_WCHAR_T; ar << TEST_UNSIGNED; ar << TEST_BOOL; ar << TEST_ULONGLONG; ar << TEST_LONGLONG; ar.Close(); file.Seek( 0, CFile::begin ); CArchive ar2( &file, CArchive::load ); BYTE by; ar2 >> by; if( by != TEST_BYTE ) _fail; WORD w; ar2 >> w; if( w != TEST_WORD ) _fail; LONG l; ar2 >> l; if( l != TEST_LONG ) _fail; DWORD dw; ar2 >> dw; if( dw != TEST_DWORD ) _fail; float f; ar2 >> f; if( f != TEST_FLOAT ) _fail; double d; ar2 >> d; if( d != TEST_DOUBLE ) _fail; int i; ar2 >> i; if( i != TEST_INT ) _fail; short s; ar2 >> s; if( s != TEST_SHORT ) _fail; char ch; ar2 >> ch; if( ch != TEST_CHAR ) _fail; wchar_t wc; ar2 >> wc; if( wc != TEST_WCHAR_T ) _fail; unsigned u; ar2 >> u; if( u != TEST_UNSIGNED ) _fail; bool b; ar2 >> b; if( b != TEST_BOOL ) _fail; ULONGLONG ull; ar2 >> ull; if( ull != TEST_ULONGLONG ) _fail; LONGLONG ll; ar2 >> ll; if( ll != TEST_LONGLONG ) _fail; ar2.Close(); _PASS; }
void CAICHHashSet::DbgTest() { #ifdef _DEBUG //define TESTSIZE 4294567295 uint8 maxLevel = 0; uint32 cHash = 1; uint8 curLevel = 0; //uint32 cParts = 0; maxLevel = 0; /* CAICHHashTree* pTest = new CAICHHashTree(TESTSIZE, true, 9728000); for (uint64 i = 0; i+9728000 < TESTSIZE; i += 9728000) { CAICHHashTree* pTest2 = new CAICHHashTree(9728000, true, EMBLOCKSIZE); pTest->ReplaceHashTree(i, 9728000, &pTest2); cParts++; } CAICHHashTree* pTest2 = new CAICHHashTree(TESTSIZE-i, true, EMBLOCKSIZE); pTest->ReplaceHashTree(i, (TESTSIZE-i), &pTest2); cParts++; */ #define TESTSIZE m_pHashTree.m_nDataSize if (m_pHashTree.m_nDataSize <= EMBLOCKSIZE) { return; } CAICHHashSet TestHashSet(m_pOwner); TestHashSet.SetFileSize(m_pOwner->GetFileSize()); TestHashSet.SetMasterHash(GetMasterHash(), AICH_VERIFIED); CMemFile file; uint64 i; for (i = 0; i+9728000 < TESTSIZE; i += 9728000) { VERIFY( CreatePartRecoveryData(i, &file) ); /*uint32 nRandomCorruption = (rand() * rand()) % (file.GetLength()-4); file.Seek(nRandomCorruption, CFile::begin); file.Write(&nRandomCorruption, 4);*/ file.Seek(0,wxFromStart); VERIFY( TestHashSet.ReadRecoveryData(i, &file) ); file.Seek(0,wxFromStart); TestHashSet.FreeHashSet(); uint32 j; for (j = 0; j+EMBLOCKSIZE < 9728000; j += EMBLOCKSIZE) { VERIFY( m_pHashTree.FindHash(i+j, EMBLOCKSIZE, &curLevel) ); //TRACE(wxT("%u - %s\r\n"), cHash, m_pHashTree.FindHash(i+j, EMBLOCKSIZE, &curLevel)->m_Hash.GetString()); maxLevel = max(curLevel, maxLevel); curLevel = 0; cHash++; } VERIFY( m_pHashTree.FindHash(i+j, 9728000-j, &curLevel) ); //TRACE(wxT("%u - %s\r\n"), cHash, m_pHashTree.FindHash(i+j, 9728000-j, &curLevel)->m_Hash.GetString()); maxLevel = max(curLevel, maxLevel); curLevel = 0; cHash++; } VERIFY( CreatePartRecoveryData(i, &file) ); file.Seek(0,wxFromStart); VERIFY( TestHashSet.ReadRecoveryData(i, &file) ); file.Seek(0,wxFromStart); TestHashSet.FreeHashSet(); for (uint64 j = 0; j+EMBLOCKSIZE < TESTSIZE-i; j += EMBLOCKSIZE) { VERIFY( m_pHashTree.FindHash(i+j, EMBLOCKSIZE, &curLevel) ); //TRACE(wxT("%u - %s\r\n"), cHash,m_pHashTree.FindHash(i+j, EMBLOCKSIZE, &curLevel)->m_Hash.GetString()); maxLevel = max(curLevel, maxLevel); curLevel = 0; cHash++; } //VERIFY( m_pHashTree.FindHash(i+j, (TESTSIZE-i)-j, &curLevel) ); //TRACE(wxT("%u - %s\r\n"), cHash,m_pHashTree.FindHash(i+j, (TESTSIZE-i)-j, &curLevel)->m_Hash.GetString()); maxLevel = max(curLevel, maxLevel); #endif }
int main() { for( int i = 1; i <= 5; i++ ) { CIntArray arr1; CIntArray arr2; CIntArray arr3; arr1.SetSize( 0, i ); arr2.SetSize( 0, i ); arr3.SetSize( 0, i ); if( !arr1.IsEmpty() ) _fail; arr1.Add( 0 ); arr1.Add( 1 ); arr1.Add( 2 ); arr2.Add( 3 ); arr2.Add( 4 ); arr2.Add( 5 ); arr1.Append( arr2 ); arr3.Copy( arr1 ); arr3.SetAt( 0, 1 ); arr3.RemoveAt( 1 ); if( arr3.GetAt( 0 ) != 1 ) _fail; if( arr3.GetAt( 1 ) != 2 ) _fail; if( arr3.GetAt( 2 ) != 3 ) _fail; if( arr3.GetAt( 3 ) != 4 ) _fail; if( arr3.GetAt( 4 ) != 5 ) _fail; if( arr3.GetSize() != 5 ) _fail; if( arr3.GetUpperBound() != 4 ) _fail; arr1.Copy( arr2 ); arr1.InsertAt( 1, 1, 2 ); if( arr1.GetAt( 0 ) != 3 ) _fail; if( arr1.GetAt( 1 ) != 1 ) _fail; if( arr1.GetAt( 2 ) != 1 ) _fail; if( arr1.GetAt( 3 ) != 4 ) _fail; if( arr1.GetAt( 4 ) != 5 ) _fail; if( arr1.GetSize() != 5 ) _fail; if( arr1.GetUpperBound() != 4 ) _fail; arr1.Copy( arr2 ); arr1.InsertAt( 1, &arr2 ); arr1.SetAtGrow( 7, 6 ); if( arr1.GetAt( 0 ) != 3 ) _fail; if( arr1.GetAt( 1 ) != 3 ) _fail; if( arr1.GetAt( 2 ) != 4 ) _fail; if( arr1.GetAt( 3 ) != 5 ) _fail; if( arr1.GetAt( 4 ) != 4 ) _fail; if( arr1.GetAt( 5 ) != 5 ) _fail; if( arr1.GetAt( 6 ) != 0 ) _fail; if( arr1.GetAt( 7 ) != 6 ) _fail; if( arr1.GetSize() != 8 ) _fail; if( arr1.GetUpperBound() != 7 ) _fail; arr1.SetSize( 10 ); if( arr1.GetSize() != 10 ) _fail; if( arr1.GetUpperBound() != 9 ) _fail; if( arr1.GetAt( 8 ) != 0 ) _fail; if( arr1.GetAt( 9 ) != 0 ) _fail; } CIntArray sarr1; CIntArray sarr2; sarr1.SetSize( 10 ); for( int i = 0; i < 10; i++ ) { sarr1.SetAt( i, i ); } CMemFile file; CArchive ar( &file, CArchive::store ); sarr1.Serialize( ar ); ar.Close(); file.Seek( 0, CFile::begin ); CArchive ar2( &file, CArchive::load ); sarr2.Serialize( ar2 ); ar2.Close(); if( sarr1.GetSize() != sarr2.GetSize() ) _fail; for( int i = 0; i < sarr1.GetSize(); i++ ) { if( sarr1.GetAt( i ) != sarr2.GetAt( i ) ) _fail; } _PASS; }