#include "StdAfx.h"
|
#include "MBThreadUploadDB.h"
|
#include "MBDocCoverMode.h"
|
|
CMBThreadUploadDB::CMBThreadUploadDB(void)
|
{
|
m_pUploadFileOperMgr = new CMBUploadFileOperMgr();
|
m_bStop = false;
|
m_pTransMgr = NULL;
|
m_pTaskLoopMgr = NULL;
|
//m_pHostWnd = NULL;
|
}
|
|
|
CMBThreadUploadDB::~CMBThreadUploadDB(void)
|
{
|
MBSAFE_DELETE(m_pUploadFileOperMgr);
|
}
|
|
void CMBThreadUploadDB::SetTaskLoopMgr( CMBTaskLoopMgr *pTaskLoopMgr )
|
{
|
m_pTaskLoopMgr = pTaskLoopMgr;
|
}
|
|
void CMBThreadUploadDB::SetHwnd(HWND hWnd)
|
{
|
m_hWnd = hWnd;
|
}
|
|
// ¿ªÊ¼Ïß³Ì
|
void CMBThreadUploadDB::StartThread()
|
{
|
if(IsRunning())
|
return;
|
|
BeginThread();
|
}
|
|
// ½áÊøÏß³Ì
|
void CMBThreadUploadDB::OverThread()
|
{
|
m_bStop = true;
|
|
m_pUploadFileOperMgr->SetEventShutdownSet();
|
|
if(!IsRunning())
|
return;
|
|
EndThread();
|
}
|
|
|
void CMBThreadUploadDB::SetTransMgr(CMBTransMgr *pTransMgr)
|
{
|
m_pTransMgr = pTransMgr;
|
}
|
|
void CMBThreadUploadDB::GetCoverMode( CString strCatalogPath,CString strFileName,int nCabinetType,CAutoRefPtr<CMBSvrDiff> &pSvrDiff,int &nCoverMode,int &nSetCoverMode,bool &bCancel )
|
{
|
bCancel = false;
|
|
//int nUIMode = 0;
|
|
//if( nCabinetType == CMBBaseCabinetObj::CABINET_UNIT || nCabinetType == CMBBaseCabinetObj::CABINET_DEPART ) // ²¿Î»»òÕßµ¥Î»Îĵµ¹ñ
|
//{
|
// nUIMode = CMBDocCoverMode::UI_DMS;
|
//}
|
//else if( nCabinetType == CMBBaseCabinetObj::CABINET_PSN ) // ¸öÈËÎĵµ¹ñ
|
//{
|
// nUIMode = CMBDocCoverMode::UI_ND;
|
//}else{
|
// return ;
|
//}
|
nSetCoverMode = nCoverMode;
|
if( nCoverMode == CMBDocCoverMode::NONE )
|
{
|
///////////´æÔÚÎļþ///////////////////////////////////
|
if(pSvrDiff->GetDiffMgr()->ExsitName( strFileName ))
|
{
|
CMBDocCoverMode *pCoverMode = new CMBDocCoverMode();
|
//pCoverMode->m_nUIMode = nUIMode;
|
SendMessage(m_hWnd,WM_DOCCOVERMODE,(WPARAM)pCoverMode,NULL);
|
nCoverMode = pCoverMode->m_nCoverMode;
|
bCancel = pCoverMode->m_bCancel;
|
nSetCoverMode = nCoverMode;
|
if( NULL != pCoverMode )
|
{
|
delete pCoverMode;
|
pCoverMode = NULL;
|
}
|
}
|
}
|
if( nCoverMode == CMBDocCoverMode::SELFDECIDE )
|
{
|
if( NULL == pSvrDiff )
|
return ;
|
if(pSvrDiff->GetDiffMgr()->ExsitName( strFileName ))
|
{
|
CString strTip;
|
|
if(strCatalogPath.IsEmpty() )
|
strTip.Format(_T("´æÔÚÏàͬµÄÎļþ¡°%s¡± "),strFileName);
|
else
|
strTip.Format(_T("Ŀ¼¡°%s¡±ÖдæÔÚÏàͬµÄÎļþ¡°%s¡±"),strCatalogPath,strFileName);
|
|
CMBDocCoverMode *pCoverMode = new CMBDocCoverMode();
|
//pCoverMode->m_nUIMode = nUIMode;
|
pCoverMode->m_strTip = strTip;
|
SendMessage(m_hWnd,WM_DOCCOVERMODE2,(WPARAM)pCoverMode,NULL);
|
nSetCoverMode = pCoverMode->m_nCoverMode;
|
bCancel = pCoverMode->m_bCancel;
|
if( NULL != pCoverMode )
|
{
|
delete pCoverMode;
|
pCoverMode = NULL;
|
}
|
}
|
else
|
{
|
nSetCoverMode = CMBDocCoverMode::NEW;
|
}
|
}
|
// ûÓи²¸Ç£¬ËùÒÔÆÁ±ÎÕâ¸ö¹¦ÄÜ
|
/*if( nCoverMode == CMBDocCoverMode::COVER )
|
{
|
nCoverMode = CMBDocCoverMode::SKIP;
|
bCancel = true;
|
}*/
|
}
|
|
void CMBThreadUploadDB::AddUploadFileLst( CStringArray &arFileLst,CString strServerPath,CString strRootPath,CString strCabinetID,int nCabinetType,CString strParentCatalogID,CString strFileSFlag,CString strFrom)
|
{
|
CString strFilePath;
|
// ÉêÇë×ÊÔ´
|
CMBUploadFileOper *pUploadFileOper = new CMBUploadFileOper();
|
pUploadFileOper->SetState(CMBUploadFileOper::State_NoTraversing); // ״̬£¬0 δ±éÀú£¬1 ÕýÔÚ±éÀú£¬2 ±éÀúÍê³É
|
pUploadFileOper->m_strRootPath = strRootPath;
|
|
pUploadFileOper->m_strCabinetID = strCabinetID;
|
pUploadFileOper->m_nCabinetType = nCabinetType;
|
pUploadFileOper->m_strParentCatalogID = strParentCatalogID;
|
pUploadFileOper->m_strFileSFlag = strFileSFlag;
|
pUploadFileOper->m_strServerPath = strServerPath;
|
pUploadFileOper->m_strFrom = strFrom;
|
|
for( int i=0; i< arFileLst.GetCount(); i++ )
|
{
|
strFilePath = arFileLst[i];
|
pUploadFileOper->m_arSelFileName.Add(strFilePath);
|
} // end for
|
// ·ÅÈëÏß³Ì ÉÏ´«±éÀú¶ÓÁÐ
|
if(!m_pUploadFileOperMgr->AddUploadFileOper(pUploadFileOper,true))
|
{
|
delete pUploadFileOper;
|
pUploadFileOper = NULL;
|
return;
|
}
|
m_pUploadFileOperMgr->SetEventExeSet();
|
}
|
|
// ÉÏ´«Ñ¡Ôñ
|
void CMBThreadUploadDB::TraverseSelFile( CMBUploadFileOper *pUploadFileOper,BOOL &bStopThread )
|
{
|
CString strFilePath;
|
CString strTmpCatalogID;
|
CString strCabinetID, strParentCatalogID,strServerPath,strRootPath,strTmpSerPath1,strTmpSerPath2,
|
strFileSFlag,strCatalogName ,strTmpServerPath,strCatalogID,strFileName,strErrInfo;
|
int nCabinetType = 0;
|
int nCoverMode = -1;
|
int nSetCoverMode = 0;
|
bool bCancel = false;
|
|
if( pUploadFileOper == NULL )
|
return ;
|
strCabinetID = pUploadFileOper->m_strCabinetID;
|
strParentCatalogID = pUploadFileOper->m_strParentCatalogID;
|
strFileSFlag = pUploadFileOper->m_strFileSFlag;
|
strServerPath = pUploadFileOper->m_strServerPath;
|
strRootPath = pUploadFileOper->m_strRootPath;
|
nCabinetType = pUploadFileOper->m_nCabinetType;
|
//////////////////////////////////////////////////////////////
|
CAutoRefPtr<CMBSvrDiff> pSvrDiff(new CMBSvrDiff());
|
pSvrDiff->Release();
|
|
pSvrDiff->m_nCabinetType = nCabinetType;
|
pSvrDiff->m_strSvrPath = strServerPath;
|
pSvrDiff->m_strCabinetID = strCabinetID;
|
// ²»Îª±à¼Ê±
|
if( pUploadFileOper->m_strFrom != FCTN_ED )
|
{
|
m_pTaskLoopMgr->PostGetDocList2Task(pSvrDiff,true);
|
}
|
// ´¦Àíµ±Ç°Ñ¡ÔñµÄÎļþ
|
//pDocWnd->m_pTransMgr->StartTransaction();
|
for( int i=0; i < pUploadFileOper->m_arSelFileName.GetCount(); i++ )
|
{
|
// ֹͣ
|
if(bStopThread)
|
return;
|
|
strFilePath = pUploadFileOper->m_arSelFileName[i];
|
if( CStrFileUtils::IsExist(strFilePath) )
|
{
|
__int64 nFileSize = CStrFileUtils::GetFileSize(strFilePath);
|
strFileName = CStrFileUtils::GetFileName(strFilePath);
|
if( nFileSize == 0 )
|
continue;
|
|
if( pUploadFileOper->m_strFrom != FCTN_ED )
|
{
|
GetCoverMode( strServerPath,strFileName,nCabinetType,pSvrDiff,nCoverMode,nSetCoverMode,bCancel );
|
if( bCancel )
|
return ;
|
|
// ¸²¸ÇÄ£Ê½ÎªÌø¹ý
|
if( CMBDocCoverMode::SKIP == nSetCoverMode )
|
{
|
if(pSvrDiff->GetDiffMgr()->ExsitName( strFileName ))
|
{
|
continue;
|
}
|
}
|
}
|
////////////////////////////////////////////////
|
CAutoRefPtr<CMBUploadFileInfo> pUploadFileInfo(new CMBUploadFileInfo());
|
pUploadFileInfo->Release(); // ÊÍ·ÅÒýÓüÆÊý
|
pUploadFileInfo->m_nCabinetType = pUploadFileOper->m_nCabinetType;
|
pUploadFileInfo->m_strID = CStrFileUtils::GenerateGuid(); // id
|
pUploadFileInfo->m_strServerPath = strServerPath; // ·þÎñ·¾¶
|
pUploadFileInfo->SetLocalPath(strFilePath); // µ±Ç°Â·¾¶
|
pUploadFileInfo->SetStatus(CMBUploadFileInfo::Status_NoFinish); // ״̬
|
pUploadFileInfo->m_nFileSize = CStrFileUtils::GetFileSize(strFilePath);; // Îļþ´óС
|
pUploadFileInfo->m_nIsDir = 0; // 1ÊÇĿ¼£¬0 ²»ÊÇ
|
pUploadFileInfo->m_strFileSvr = strFileSFlag; // Îļþ·þÎñÆ÷±êʶ
|
pUploadFileInfo->m_strFileName = strFileName; // ÎļþÃû³Æ
|
pUploadFileInfo->m_strTAddTime = CStrFileUtils::GetLocalDt(); // Ìí¼Óʱ¼ä
|
pUploadFileInfo->m_strCabinetID = strCabinetID; // Îĵµ¹ñid
|
pUploadFileInfo->m_nCabinetType = pUploadFileOper->m_nCabinetType;
|
pUploadFileInfo->m_nCoverMode = nSetCoverMode; // ¸²¸Çģʽ
|
pUploadFileInfo->m_strFrom = pUploadFileOper->m_strFrom; // À´Ô´
|
if(!m_pTransMgr->InsertSqliteUploadFile( pUploadFileInfo,strErrInfo )) // ²åÈëÊý¾Ý¿â
|
{
|
return ;
|
}
|
// Ôö¼ÓÉÏ´«×ܼǼ
|
m_pTransMgr->AddUploadFileSize(pUploadFileInfo->m_nFileSize);
|
// ÉèÖÃÉÏ´«¶ÓÁУ¬ÉÏ´«Ê¼þ
|
m_pTransMgr->GetUploadQueue()->SetEventExeSet();
|
}
|
}// end for
|
//pDocWnd->m_pTransMgr->Commit();
|
// ÉèÖÃÒ»¸ö¶¨Ê±Æ÷
|
//m_pHostWnd->SetTimer(TIMER_QUERY_UPLOADTILE,1200); // 1200 ÃëºóË¢ÐÂһϵ±Ç°½çÃæ
|
// ´¦Àíµ±Ç°Ñ¡ÔñµÄĿ¼
|
for( int i=0; i< pUploadFileOper->m_arSelFileName.GetCount(); i++ )
|
{
|
// ֹͣ
|
if(bStopThread)
|
return;
|
|
strFilePath = pUploadFileOper->m_arSelFileName[i];
|
if( CStrFileUtils::IsDirExit( strFilePath ) )
|
{
|
if( !CStrFileUtils::HasFileOnNextLevel(strFilePath) )
|
{
|
strTmpServerPath = CStrFileUtils::GetServerPath(strRootPath,strServerPath,strFilePath);
|
|
CAutoRefPtr<CMBUploadFileInfo> pUploadFileInfo(new CMBUploadFileInfo());
|
pUploadFileInfo->Release(); // ÊÍ·ÅÒýÓüÆÊý
|
|
pUploadFileInfo->m_strID = CStrFileUtils::GenerateGuid(); // id
|
pUploadFileInfo->m_strServerPath = strTmpServerPath; // ·þÎñ·¾¶
|
pUploadFileInfo->SetLocalPath(strFilePath); // µ±Ç°Â·¾¶
|
pUploadFileInfo->SetStatus(CMBUploadFileInfo::Status_NoFinish); // ״̬
|
pUploadFileInfo->m_nIsDir = 1; // 1ÊÇĿ¼£¬0 ²»ÊÇ
|
pUploadFileInfo->m_strFileSvr = strFileSFlag; // Îļþ·þÎñÆ÷±êʶ
|
pUploadFileInfo->m_strTAddTime = CStrFileUtils::GetLocalDt(); // Ìí¼Óʱ¼ä
|
pUploadFileInfo->m_strCabinetID = strCabinetID; // Îĵµ¹ñid
|
pUploadFileInfo->m_nCabinetType = pUploadFileOper->m_nCabinetType;
|
pUploadFileInfo->m_strFrom = pUploadFileOper->m_strFrom; // À´Ô´
|
if(!m_pTransMgr->InsertSqliteUploadFile( pUploadFileInfo,strErrInfo )) // ²åÈëÊý¾Ý¿â
|
{
|
return;
|
}
|
// ÉèÖÃÉÏ´«¶ÓÁУ¬ÉÏ´«Ê¼þ
|
m_pTransMgr->GetUploadQueue()->SetEventExeSet();
|
}
|
if( TraverseDir_ThreadEnd == TraverseDirBF(nCoverMode,strFilePath,strRootPath,strServerPath,strFileSFlag,strCabinetID,pUploadFileOper->m_nCabinetType,pUploadFileOper->m_strFrom,bStopThread,strErrInfo ))
|
return ;
|
}
|
} // end for
|
}
|
|
// ±éÀúĿ¼
|
int CMBThreadUploadDB::TraverseDirBF( int &nCoverMode,const CString& strDir,CString strRootPath,CString strServerPath,CString strFileSFlag,CString strCabinetID,int nCabinetType,CString strFrom,BOOL &bStopThread,CString &strErrInfo )
|
{
|
deque<CString> dequePath;
|
CString strTemp = strDir;
|
CString strTmpServerPath,strFileName;
|
// ֹͣ
|
if(bStopThread)
|
return TraverseDir_ThreadEnd;
|
|
CAutoRefPtr<CMBSvrDiff> pSvrDiff = NULL;
|
int nSetCoverMode = 0;
|
bool bCancel = false;
|
|
while(true)
|
{
|
/////////////
|
strTmpServerPath = CStrFileUtils::GetServerPath(strRootPath,strServerPath,strTemp);
|
///////////////////////µÃµ½ÎĵµÁбí///////////////////
|
if( strFrom != FCTN_ED )
|
{
|
if(CMBDocCoverMode::SKIP == nCoverMode || CMBDocCoverMode::NONE == nCoverMode || CMBDocCoverMode::SELFDECIDE == nCoverMode)
|
{
|
pSvrDiff = new CMBSvrDiff();
|
pSvrDiff->Release();
|
|
pSvrDiff->m_nCabinetType = nCabinetType;
|
pSvrDiff->m_strSvrPath = strTmpServerPath;
|
pSvrDiff->m_strCabinetID = strCabinetID;
|
//
|
m_pTaskLoopMgr->PostGetDocList2Task(pSvrDiff,true);
|
}
|
}
|
///////////////////end µÃµ½ÎĵµÁбí////////////////
|
// ֹͣ
|
if(bStopThread)
|
return TraverseDir_ThreadEnd;
|
|
if (!PathFileExists(strTemp))
|
{
|
return TraverseDir_Err;
|
}
|
////// strTempĿ¼
|
CString strDirFind = strTemp + _T("\\*");
|
|
WIN32_FIND_DATA ffd = {0};
|
HANDLE hFind = FindFirstFile(strDirFind, &ffd);
|
|
if (INVALID_HANDLE_VALUE == hFind)
|
{
|
//return FALSE;
|
if (dequePath.empty())
|
{
|
break;
|
}
|
else
|
{
|
strTemp = dequePath.front();
|
dequePath.pop_front();
|
continue;
|
}
|
}
|
// List all the files in the directory with some info about them.
|
// pDocWnd->m_pTransMgr->StartTransaction(); // ÕâÑù»á¿ìµã
|
do
|
{
|
// ֹͣ
|
if(bStopThread)
|
return TraverseDir_ThreadEnd;
|
|
if ((0 == _tcscmp(ffd.cFileName, _T("."))) || (0 == _tcscmp(ffd.cFileName, _T(".."))))
|
{
|
continue;
|
}
|
CString strFilePathName = strTemp + _T("\\") + ffd.cFileName;
|
if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
{
|
dequePath.push_back(strFilePathName);
|
if( !CStrFileUtils::HasFileOnNextLevel(strFilePathName) )
|
{
|
strTmpServerPath = CStrFileUtils::GetServerPath(strRootPath,strServerPath,strFilePathName);
|
|
CAutoRefPtr<CMBUploadFileInfo> pUploadFileInfo(new CMBUploadFileInfo());
|
pUploadFileInfo->Release(); // ÊÍ·ÅÒýÓüÆÊý
|
|
pUploadFileInfo->m_strID = CStrFileUtils::GenerateGuid(); // id
|
pUploadFileInfo->m_nCabinetType = nCabinetType;
|
pUploadFileInfo->m_strServerPath = strTmpServerPath; // ·þÎñ·¾¶
|
pUploadFileInfo->SetLocalPath(strFilePathName); // µ±Ç°Â·¾¶
|
pUploadFileInfo->SetStatus(CMBUploadFileInfo::Status_NoFinish); // ״̬
|
pUploadFileInfo->m_nIsDir = 1; // 1ÊÇĿ¼£¬0 ²»ÊÇ
|
pUploadFileInfo->m_strFileSvr = strFileSFlag; // Îļþ·þÎñÆ÷±êʶ
|
pUploadFileInfo->m_strTAddTime = CStrFileUtils::GetLocalDt(); // Ìí¼Óʱ¼ä
|
pUploadFileInfo->m_strCabinetID = strCabinetID; // Îĵµ¹ñid
|
pUploadFileInfo->m_nCabinetType = nCabinetType;
|
pUploadFileInfo->m_strFrom = strFrom;
|
if(!m_pTransMgr->InsertSqliteUploadFile( pUploadFileInfo,strErrInfo )) // ²åÈëÊý¾Ý¿â
|
{
|
return TraverseDir_Err;
|
}
|
// ÉèÖÃÉÏ´«¶ÓÁУ¬ÉÏ´«Ê¼þ
|
m_pTransMgr->GetUploadQueue()->SetEventExeSet();
|
}
|
}
|
else
|
{
|
__int64 nFileSize = CStrFileUtils::GetFileSize(strFilePathName);
|
strFileName = CStrFileUtils::GetFileName(strFilePathName);
|
strTmpServerPath = CStrFileUtils::GetServerPath(strRootPath,strServerPath,strFilePathName);
|
if( nFileSize == 0 )
|
continue;
|
////////////////////¶Ô¸²¸Çģʽ´¦Àí//////////////////////////////////
|
if( strFrom != FCTN_ED )
|
{
|
GetCoverMode( strTmpServerPath,strFileName,nCabinetType,pSvrDiff,nCoverMode,nSetCoverMode,bCancel );
|
if( bCancel )
|
return TraverseDir_Exit;
|
// ¸²¸ÇÄ£Ê½ÎªÌø¹ý
|
if( CMBDocCoverMode::SKIP == nSetCoverMode )
|
{
|
if(pSvrDiff->GetDiffMgr()->ExsitName( strFileName ))
|
{
|
continue;
|
}
|
}
|
}
|
///////////////////end ¶Ô¸²¸Çģʽ´¦Àí//////////////////////////////////
|
CAutoRefPtr<CMBUploadFileInfo> pUploadFileInfo(new CMBUploadFileInfo());
|
pUploadFileInfo->Release(); // ÊÍ·ÅÒýÓüÆÊý
|
|
pUploadFileInfo->m_strID = CStrFileUtils::GenerateGuid(); // id
|
pUploadFileInfo->m_nCabinetType = nCabinetType;
|
pUploadFileInfo->m_strServerPath = strTmpServerPath; // ·þÎñ·¾¶
|
pUploadFileInfo->SetLocalPath(strFilePathName); // µ±Ç°Â·¾¶
|
pUploadFileInfo->SetStatus(CMBUploadFileInfo::Status_NoFinish); // ״̬
|
pUploadFileInfo->m_nFileSize = CStrFileUtils::GetFileSize(strFilePathName);; // Îļþ´óС
|
pUploadFileInfo->m_nIsDir = 0; // 1ÊÇĿ¼£¬0 ²»ÊÇ
|
pUploadFileInfo->m_strFileSvr = strFileSFlag; // Îļþ·þÎñÆ÷±êʶ
|
pUploadFileInfo->m_strFileName = strFileName; // ÎļþÃû³Æ
|
pUploadFileInfo->m_strTAddTime = CStrFileUtils::GetLocalDt(); // Ìí¼Óʱ¼ä
|
pUploadFileInfo->m_strCabinetID = strCabinetID; // Îĵµ¹ñid
|
pUploadFileInfo->m_nCoverMode = nSetCoverMode; // Îĵµ¸²¸Çģʽ
|
pUploadFileInfo->m_strFrom = strFrom;
|
if(!m_pTransMgr->InsertSqliteUploadFile( pUploadFileInfo,strErrInfo )) // ²åÈëÊý¾Ý¿â
|
{
|
return TraverseDir_Err;
|
}
|
// Ôö¼ÓÉÏ´«×ܼǼ
|
m_pTransMgr->AddUploadFileSize(pUploadFileInfo->m_nFileSize);
|
// ÉèÖÃÉÏ´«¶ÓÁУ¬ÉÏ´«Ê¼þ
|
m_pTransMgr->GetUploadQueue()->SetEventExeSet();
|
}
|
}
|
while (FindNextFile(hFind, &ffd) != 0);
|
|
//pDocWnd->m_pTransMgr->Commit();
|
|
DWORD dwError = GetLastError();
|
if (dwError != ERROR_NO_MORE_FILES)
|
{
|
FindClose(hFind);
|
return TraverseDir_Err;
|
}
|
|
FindClose(hFind);
|
if (dequePath.empty())
|
{
|
break;
|
}
|
else
|
{
|
strTemp = dequePath.front();
|
dequePath.pop_front();
|
}
|
}// end while(true)
|
return TraverseDir_Exit;
|
}
|
|
UINT CMBThreadUploadDB::Run()
|
{
|
CMBUploadFileOperVector::iterator it;
|
CMBUploadFileOper *pUploadFileOper = NULL;
|
|
HANDLE handlesToWaitFor[2];
|
DWORD dwResult;
|
handlesToWaitFor[0] = m_pUploadFileOperMgr->GetEventExeHandle();
|
handlesToWaitFor[1] = m_pUploadFileOperMgr->GetEventShutdownHandle();
|
|
while ( !IsStoped() )
|
{
|
#ifdef _DEBUG
|
dwResult = ::WaitForMultipleObjects( 2, handlesToWaitFor, false, 6000 );
|
#else
|
dwResult = ::WaitForMultipleObjects( 2, handlesToWaitFor, false, 300000 );
|
#endif
|
if ( dwResult == WAIT_OBJECT_0 )
|
{
|
if( m_bStop )
|
break;
|
|
m_pUploadFileOperMgr->SetEventExeReset();
|
|
CMBUploadFileOperVector vectorUploadFileOper;
|
|
m_pUploadFileOperMgr->AttachUplodFileOper(vectorUploadFileOper);
|
|
for( it = vectorUploadFileOper.begin();it != vectorUploadFileOper.end();it++ )
|
{
|
if(m_bStop)
|
return 0;
|
pUploadFileOper = *it;
|
if( pUploadFileOper->GetState() == CMBUploadFileOper::State_NoTraversing ) // ״̬£¬0 δ±éÀú£¬1 ÕýÔÚ±éÀú£¬2 ±éÀúÍê³É
|
{
|
pUploadFileOper->SetState( CMBUploadFileOper::State_Traversing );
|
TraverseSelFile(pUploadFileOper,m_bStop);
|
pUploadFileOper->SetState( CMBUploadFileOper::State_Traversaled );
|
}
|
m_pUploadFileOperMgr->RemoveUploadFileOper( pUploadFileOper );
|
}
|
vectorUploadFileOper.clear();
|
}
|
else if ( dwResult == WAIT_OBJECT_0 + 1 )
|
{
|
// Time to shutdown
|
break;
|
}
|
else if ( dwResult == WAIT_TIMEOUT )
|
{
|
m_pUploadFileOperMgr->SetEventExeSet();
|
}
|
} // End of while ( true )
|
return 0;
|
}
|