示例#1
0
BOOL fsUploadsMgr::LoadUploads(HANDLE hFile, BOOL bCompletedOnly, WORD wVer)
{
	DWORD dw;

	size_t cUploads;
	if (FALSE == ReadFile (hFile, &cUploads, sizeof (size_t), &dw, NULL))
		return FALSE;

	for (size_t i = 0; i < cUploads; i++)
	{
		vmsUploadSmartPtr upl;
		Upload_CreateInstance (upl);

		if (FALSE == ReadFile (hFile, &upl->bAutostart, sizeof (BOOL), &dw, NULL))
			return FALSE;
		if (FALSE == ReadFile (hFile, &upl->nID, sizeof (UINT), &dw, NULL))
			return FALSE;
		if (FALSE == ReadFile (hFile, &upl->dwFlags, sizeof (DWORD), &dw, NULL))
			return FALSE;
		if (FALSE == ReadFile (hFile, &upl->dwState, sizeof (DWORD), &dw, NULL))
			return FALSE;
		upl->dwState = 0; 
		if (FALSE == ReadFile (hFile, &upl->dateAdded, sizeof (FILETIME), &dw, NULL))
			return FALSE;
		if (FALSE == upl->log.Load (hFile))
			return FALSE;
		if (FALSE == upl->pMgr->Load (hFile))
			return FALSE;

		if (bCompletedOnly && upl->pMgr->IsDone () == FALSE)
			continue;

		upl->pMgr->SetEventFunc (_UploadMgrEvents, this);

		if (bCompletedOnly)
		{
			upl->dwFlags |= UF_DONTSAVETOFILE | UF_READONLY;
			m_cDontSaveUploads++;
		}
		
		if (wVer == 1)
		{
			upl->dwFlags = 0;
			upl->nID = InterlockedIncrement (m_pnUplNextId);
		}

		*m_pnUplNextId = max (*m_pnUplNextId, (LONG)upl->nID + 1);

		m_vUploads.push_back (upl);
	}

	return TRUE;
}
示例#2
0
vmsUploadSmartPtr CUploadsWnd::CreateUpload(vmsUploadPackageImpl *pkg)
{
	vmsUploadSmartPtr upl;

	Upload_CreateInstance (upl);
	upl->bAutostart = TRUE;
	upl->pMgr->Create (pkg);
	upl->dwState = 0;
	upl->dwFlags = 0;
	upl->dwReserved = 0;

	_UplsMgr.Add (upl);

	return upl;
}
示例#3
0
void fsUploadsMgr::DeleteUploads(UPLS_LIST_REF v)
{
	
	std::vector <size_t> vIndexes;
	size_t cUpls = v.size ();
	size_t nStart = 0;	

	size_t i = 0;
	for (i = 0; i < cUpls; i++)
		vIndexes.push_back ((size_t)-1);

	for (i = 0; i < m_vUploads.size (); i++)
	{
		vmsUploadSmartPtr upl = m_vUploads [i];

		for (size_t j = nStart; j < cUpls; j++)
		{
			if (upl == v.at (j))
			{				
				vIndexes [j] = i;

				size_t k = j;
				for (k = j; k > nStart && vIndexes [k - 1] != -1; k--)
					;
				if (k == nStart)
					nStart = j + 1;
				break;
			}
		}
	}
	

	UPLS_LIST *pv = new UPLS_LIST;

	vmsUploadSmartPtr uplFake;
	Upload_CreateInstance (uplFake);

	for (i = 0; i < (UINT)v.size (); i++)
	{
		vmsUploadSmartPtr upl = v.at (i);

		int iIndex = vIndexes [i];
		if (iIndex == -1) 
			continue;

		upl->pMgr->SetEventFunc (NULL, 0);

		Event (upl, UME_UPLOAD_WILL_BE_DELETED);

		m_vUploads [iIndex] = uplFake;
		
		pv->push_back (upl);
	}

	UPLS_LIST v2;
	for (i = 0; i < m_vUploads.size (); i++)
	{
		if (m_vUploads [i] != uplFake)
			v2.push_back (m_vUploads [i]);
	}
	m_vUploads = v2;	

	Event (NULL, UME_UPLOADS_WERE_DELETED);

	ProcessUploads ();

	DWORD dw;
	CloseHandle (
		CreateThread (NULL, 0, _threadDeleteUploads, pv, 0, &dw));
}