Ejemplo n.º 1
0
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);
	}
}