1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/** \file ListThread_InodeAction.cpp
\brief To be included into ListThread.cpp, to optimize and prevent code duplication
\see ListThread.cpp */
#ifdef LISTTHREAD_H
//do the inode action
ActionToDoInode& currentActionToDoInode=actionToDoListInode[int_for_internal_loop];
switch(currentActionToDoInode.type)
{
case ActionType_RealMove:
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("launch real move, source: %1, destination: %2").arg(currentActionToDoInode.source.absoluteFilePath()).arg(currentActionToDoInode.destination.absoluteFilePath()));
mkPathQueue.addPath(currentActionToDoInode.source.absoluteFilePath(),currentActionToDoInode.destination.absoluteFilePath(),currentActionToDoInode.type);
currentActionToDoInode.isRunning=true;
numberOfInodeOperation++;
if(numberOfInodeOperation>=inodeThreads)
return;
break;
case ActionType_MkPath:
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("launch mkpath, source: %1, destination: %2").arg(currentActionToDoInode.source.absoluteFilePath()).arg(currentActionToDoInode.destination.absoluteFilePath()));
mkPathQueue.addPath(currentActionToDoInode.source.absoluteFilePath(),currentActionToDoInode.destination.absoluteFilePath(),currentActionToDoInode.type);
currentActionToDoInode.isRunning=true;
numberOfInodeOperation++;
if(numberOfInodeOperation>=inodeThreads)
return;
break;
#ifdef ULTRACOPIER_PLUGIN_RSYNC
case ActionType_RmSync:
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QString("launch rmsync, destination: %1").arg(currentActionToDoInode.destination.absoluteFilePath()));
mkPathQueue.addPath(currentActionToDoInode.destination.absoluteFilePath(),currentActionToDoInode.destination.absoluteFilePath(),currentActionToDoInode.type);
currentActionToDoInode.isRunning=true;
numberOfInodeOperation++;
if(numberOfInodeOperation>=inodeThreads)
return;
break;
#endif
case ActionType_MovePath:
//then empty (no file), can try remove it
if(currentActionToDoInode.size==0 || actionToDoListTransfer.isEmpty())//don't put afterTheTransfer because actionToDoListInode_afterTheTransfer -> already afterTheTransfer
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("launch rmpath: %1").arg(currentActionToDoInode.source.absoluteFilePath()));
mkPathQueue.addPath(currentActionToDoInode.source.absoluteFilePath(),currentActionToDoInode.destination.absoluteFilePath(),currentActionToDoInode.type);
currentActionToDoInode.isRunning=true;
numberOfInodeOperation++;
if(numberOfInodeOperation>=inodeThreads)
return;
}
else //have do the destination, put the remove to after
{
currentActionToDoInode.size=0;
actionToDoListInode_afterTheTransfer << currentActionToDoInode;
actionToDoListInode.removeAt(int_for_internal_loop);
int_for_internal_loop--;
actionToDoListInode_count--;
if(numberOfInodeOperation>=inodeThreads)
return;
}
break;
default:
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("Wrong type at inode action"));
return;
}
#endif
|