BOOL CUpdateInfo::DeleteUpdate(CString hash) { uchar UpdateHash[16]; CPartFile* pPartFile; if(!strmd4(hash,UpdateHash)) { return FALSE; } CKnownFile* file = CGlobalVariable::sharedfiles->GetFileByID(UpdateHash); try { //共享列表中是否有 if(file) { if(file->IsPartFile()) { //共享列表有,但未下载完,移除 pPartFile = DYNAMIC_DOWNCAST(CPartFile,file); if( pPartFile ) { pPartFile->DeleteFile(); } } else { //共享列表有,已经下载完成未安装,移除 DeleteFile(file->GetFilePath()); theApp.emuledlg->sharedfileswnd->sharedfilesctrl.RemoveFile(file); CGlobalVariable::sharedfiles->RemoveFile(file); } } if ((pPartFile = CGlobalVariable::downloadqueue->GetFileByID(UpdateHash)) != NULL) { //共享列表没有,但未下载完,移除 pPartFile->DeleteFile(); } } catch (CException* e) { e->Delete(); return FALSE; } return FALSE; }
void CMMServer::ProcessFileCommand(CMMData* data, CMMSocket* sender){ uint8 byCommand = data->ReadByte(); uint8 byFileIndex = data->ReadByte(); if (byFileIndex >= m_SentFileList.GetSize() || !theApp.downloadqueue->IsPartFile(m_SentFileList[byFileIndex])) { CMMPacket* packet = new CMMPacket(MMP_GENERALERROR); sender->SendPacket(packet); ASSERT ( false ); return; } CPartFile* selFile = m_SentFileList[byFileIndex]; switch (byCommand){ case MMT_PAUSE: selFile->PauseFile(); break; case MMT_RESUME: selFile->ResumeFile(); break; case MMT_CANCEL:{ switch(selFile->GetStatus()) { case PS_WAITINGFORHASH: case PS_HASHING: case PS_COMPLETING: case PS_COMPLETE: break; case PS_PAUSED: selFile->DeleteFile(); break; default: theApp.downloadqueue->StartNextFileIfPrefs(selFile->GetCategory()); selFile->DeleteFile(); } break; } default: CMMPacket* packet = new CMMPacket(MMP_GENERALERROR); sender->SendPacket(packet); return; } CMMPacket* packet = new CMMPacket(MMP_FILECOMMANDANS); ProcessFileListRequest(sender,packet); }
BOOL CUpdateInfo::ClearUpdateHistory(const uchar * hashkey)//清除历史升级任务 { for (int i = 0; i < CGlobalVariable::sharedfiles->GetCount(); i++) { CKnownFile* file = CGlobalVariable::sharedfiles->GetFileByIndex(i); CPartFile* pPartFile; try { //共享列表中是否有 if(file) { if ( IsUpdateTask( file->GetFilePath() ) && file->GetFileHash() != hashkey ) { if(file->IsPartFile()) { //共享列表有,但未下载完,移除 pPartFile = DYNAMIC_DOWNCAST(CPartFile,file); if( pPartFile ) { pPartFile->DeleteFile(); } } else { //共享列表有,已经下载完成未安装,移除 DeleteFile(file->GetFilePath()); theApp.emuledlg->sharedfileswnd->sharedfilesctrl.RemoveFile(file); CGlobalVariable::sharedfiles->RemoveFile(file); CGlobalVariable::filemgr.RemoveFileItem(file); } } else continue; } } catch (CException* e) { e->Delete(); //return FALSE; } } for (int i = 0; i < CGlobalVariable::downloadqueue->GetFileCount(); i++) { CPartFile* pFile = CGlobalVariable::downloadqueue->GetFileByIndex(i); try { if (pFile) { if ( IsUpdateTask( pFile->GetFilePath() ) && pFile->GetFileHash() != hashkey ) { //共享列表没有,但未下载完,移除 pFile->DeleteFile(); } } } catch (CException* e) { e->Delete(); //return FALSE; } } return TRUE; }