int CImportManager::procErr(CException*& pExc, const CString& sSupplierName, bool bIsLast) { CString sFmt = LS (L_DOWNLOADS_IMPORT_HAS_BEEN_STOPPED); CString sTmp; sTmp.Format(sFmt, (LPCTSTR)sSupplierName); CString sMsg = sTmp; sMsg += " "; TCHAR szMsg[1024] = {0,}; if (!pExc->GetErrorMessage(szMsg, 1024)) { szMsg[1023] = 0; appendDiagnostics(sMsg, szMsg); } else { sMsg += " "; sMsg += "Unkown error"; } pExc->Delete(); UINT nType = MB_ICONERROR; if (!bIsLast) { sMsg += " "; sMsg += LS (L_REQUEST_TO_CONTINUE_IMPORT); nType |= MB_YESNO; } else { nType |= MB_OK; } return ::MessageBox(m_hWizardWnd, (LPCTSTR)sMsg, LS (L_ERR), nType); }
void CUtorrentSupplier::Import(informer fnInformer, void* pData, TImportResult& tImportResult) const { try { char szPath [MAX_PATH]; if(!UtorrentInstalled(szPath)) { CString sMsg = LS (L_UTORRENT_SAVEFOLDER_NOTFOUND); throw std::runtime_error((const char*)sMsg); } ImportUtorrentDownloads(fnInformer, pData, tImportResult, this, szPath); } catch (CException* pExc) { vmsLogger::WriteLog("CUtorrentSupplier::Import exception"); CString sMsg; TCHAR szMsg[1024] = {0,}; if (!pExc->GetErrorMessage(szMsg, 1024)) { szMsg[1023] = 0; appendDiagnostics(sMsg, szMsg); } else { sMsg = "Unkown error"; } pExc->Delete(); throw std::runtime_error((const char*)sMsg); } }
void COrbitSupplier::ReadFile(HANDLE& hFile, BYTE* bBuffer, DWORD& dwBytesRead, LangPhrase enMsg) const { CString sMsg; if (!::ReadFile(hFile, (LPVOID)bBuffer, 1024, &dwBytesRead, NULL)) { DWORD dwErr = GetLastError(); sMsg = LS (enMsg); if (!CloseHandle(hFile)) { throw std::runtime_error((const char*)sMsg); } bool bFailedToRetreive = false; CString sDiagnostics; FormatMessageByErrCode(sDiagnostics, dwErr, bFailedToRetreive); if (!bFailedToRetreive) { appendDiagnostics(sMsg, sDiagnostics); } throw std::runtime_error((const char*)sMsg); } }
void COrbitSupplier::Import(informer fnInformer, void* pData, TImportResult& tImportResult) const { try { CString sMsg; OrbitDownloadsArray arrDownloads; InitArray(arrDownloads); retrieveOrbitDownloads(arrDownloads); tImportResult.nFailure = 0; tImportResult.nSuccess = 0; tImportResult.nTotal = arrDownloads.GetUpperBound() + 1; tImportResult.nUnprocessed = arrDownloads.GetUpperBound() + 1; fnInformer(tImportResult.nTotal, tImportResult.nTotal - tImportResult.nUnprocessed, GetSupplierName(), pData); processDldsImportedFromOrbit(arrDownloads, fnInformer, pData, tImportResult); } catch (CException* pExc) { vmsLogger::WriteLog("COrbitSupplier::Import exception"); CString sMsg; TCHAR szMsg[1024] = {0,}; if (!pExc->GetErrorMessage(szMsg, 1024)) { szMsg[1023] = 0; appendDiagnostics(sMsg, szMsg); } else { sMsg = "Unkown error"; } pExc->Delete(); throw std::runtime_error((const char*)sMsg); } }
void COrbitSupplier::retreivePathToOrbitAppData(CString& sPath) const { CString sMsg; TCHAR szDownloadListPath[MAX_PATH] = {0,}; HRESULT hr = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szDownloadListPath); if (hr == S_FALSE) { sMsg = LS (L_CANT_FIND_PATH_TO_ORBIT_APPDATA); throw std::runtime_error((const char*)sMsg); } if ( FAILED(hr) ) { DWORD dwErr; if (!ComErrToSysErrCode(hr, dwErr)) { sMsg = LS (L_CANT_DETECT_PATH_TO_ORBIT_APPDATA); appendErrorCode(sMsg, hr); throw std::runtime_error((const char*)sMsg); } bool bFailedToRetreive = false; CString sDiagnostics; FormatMessageByErrCode(sDiagnostics, dwErr, bFailedToRetreive); if (!bFailedToRetreive) { appendDiagnostics(sMsg, sDiagnostics); } else { sMsg = LS (L_CANT_DETECT_PATH_TO_ORBIT_APPDATA); } throw std::runtime_error((const char*)sMsg); } sPath = szDownloadListPath; }
void COrbitSupplier::OpenFile(HANDLE& hFile, const CString& sDldListFilePath, LangPhrase enMsg) const { CString sMsg; hFile = CreateFile (sDldListFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { DWORD dwErr = GetLastError(); sMsg = LS (enMsg); bool bFailedToRetreive = false; CString sDiagnostics; FormatMessageByErrCode(sDiagnostics, dwErr, bFailedToRetreive); if (!bFailedToRetreive) { appendDiagnostics(sMsg, sDiagnostics); } throw std::runtime_error((const char*)sMsg); } }