1
0
mirror of https://github.com/winscp/winscp.git synced 2026-10-24 02:28:55 +03:00

During synchronization transfer speed limit is preserved across set of synchronized directories

Source commit: bd0bf6cbae4fd2f2e2e657587962e897084dc374
This commit is contained in:
Martin Prikryl
2018-08-06 09:32:43 +00:00
parent bae86205de
commit 6290dac894
4 changed files with 21 additions and 14 deletions

View File

@@ -6559,15 +6559,17 @@ int __fastcall TTerminal::CopyToParallel(TParallelOperation * ParallelOperation,
try
{
FOperationProgress = OperationProgress;
// Need own copy, now that CopyToRemote/CopyToLocal modify the instance
TCopyParamType CopyParam = *ParallelOperation->CopyParam;
if (ParallelOperation->Side == osLocal)
{
FFileSystem->CopyToRemote(
FilesToCopy.get(), TargetDir, ParallelOperation->CopyParam, Params, OperationProgress, OnceDoneOperation);
FilesToCopy.get(), TargetDir, &CopyParam, Params, OperationProgress, OnceDoneOperation);
}
else if (DebugAlwaysTrue(ParallelOperation->Side == osRemote))
{
FFileSystem->CopyToLocal(
FilesToCopy.get(), TargetDir, ParallelOperation->CopyParam, Params, OperationProgress, OnceDoneOperation);
FilesToCopy.get(), TargetDir, &CopyParam, Params, OperationProgress, OnceDoneOperation);
}
}
__finally
@@ -6664,8 +6666,9 @@ void __fastcall TTerminal::LogTotalTransferDone(TFileOperationProgressType * Ope
LogEvent(L"Copying finished: " + OperationProgress->GetLogStr(true));
}
//---------------------------------------------------------------------------
bool __fastcall TTerminal::CopyToRemote(TStrings * FilesToCopy,
const UnicodeString TargetDir, const TCopyParamType * CopyParam, int Params, TParallelOperation * ParallelOperation)
bool __fastcall TTerminal::CopyToRemote(
TStrings * FilesToCopy, const UnicodeString & TargetDir, TCopyParamType * CopyParam, int Params,
TParallelOperation * ParallelOperation)
{
DebugAssert(FFileSystem);
DebugAssert(FilesToCopy);
@@ -6753,6 +6756,7 @@ bool __fastcall TTerminal::CopyToRemote(TStrings * FilesToCopy,
Configuration->Usage->Inc(L"UploadTime", CounterTime);
Configuration->Usage->SetMax(L"MaxUploadTime", CounterTime);
}
CopyParam->CPSLimit = OperationProgress.CPSLimit;
OperationProgress.Stop();
FOperationProgress = NULL;
}
@@ -7085,8 +7089,8 @@ void __fastcall TTerminal::Source(
UpdateSource(Handle, CopyParam, Params);
}
//---------------------------------------------------------------------------
bool __fastcall TTerminal::CopyToLocal(TStrings * FilesToCopy,
const UnicodeString TargetDir, const TCopyParamType * CopyParam, int Params,
bool __fastcall TTerminal::CopyToLocal(
TStrings * FilesToCopy, const UnicodeString & TargetDir, TCopyParamType * CopyParam, int Params,
TParallelOperation * ParallelOperation)
{
DebugAssert(FFileSystem);
@@ -7199,6 +7203,7 @@ bool __fastcall TTerminal::CopyToLocal(TStrings * FilesToCopy,
Configuration->Usage->Inc(L"DownloadTime", CounterTime);
Configuration->Usage->SetMax(L"MaxDownloadTime", CounterTime);
}
CopyParam->CPSLimit = OperationProgress.CPSLimit;
FOperationProgress = NULL;
OperationProgress.Stop();
}

View File

@@ -503,10 +503,12 @@ public:
void __fastcall ReadFile(const UnicodeString FileName, TRemoteFile *& File);
bool __fastcall FileExists(const UnicodeString FileName, TRemoteFile ** File = NULL);
void __fastcall ReadSymlink(TRemoteFile * SymlinkFile, TRemoteFile *& File);
bool __fastcall CopyToLocal(TStrings * FilesToCopy,
const UnicodeString TargetDir, const TCopyParamType * CopyParam, int Params, TParallelOperation * ParallelOperation);
bool __fastcall CopyToRemote(TStrings * FilesToCopy,
const UnicodeString TargetDir, const TCopyParamType * CopyParam, int Params, TParallelOperation * ParallelOperation);
bool __fastcall CopyToLocal(
TStrings * FilesToCopy, const UnicodeString & TargetDir, TCopyParamType * CopyParam, int Params,
TParallelOperation * ParallelOperation);
bool __fastcall CopyToRemote(
TStrings * FilesToCopy, const UnicodeString & TargetDir, TCopyParamType * CopyParam, int Params,
TParallelOperation * ParallelOperation);
int __fastcall CopyToParallel(TParallelOperation * ParallelOperation, TFileOperationProgressType * OperationProgress);
void __fastcall LogParallelTransfer(TParallelOperation * ParallelOperation);
void __fastcall CreateDirectory(const UnicodeString & DirName, const TRemoteProperties * Properties);

View File

@@ -7283,8 +7283,8 @@ void __fastcall TCustomScpExplorerForm::RemoteFileControlDDTargetDrop()
}
}
//---------------------------------------------------------------------------
void __fastcall TCustomScpExplorerForm::DDDownload(TStrings * FilesToCopy,
const UnicodeString TargetDir, const TCopyParamType * CopyParam, int Params)
void __fastcall TCustomScpExplorerForm::DDDownload(
TStrings * FilesToCopy, const UnicodeString & TargetDir, TCopyParamType * CopyParam, int Params)
{
void * BatchStorage;
BatchStart(BatchStorage);

View File

@@ -460,8 +460,8 @@ protected:
void __fastcall RemoteFileControlDDTargetDrop();
bool __fastcall RemoteFileControlFileOperation(TObject * Sender,
TFileOperation Operation, bool NoConfirmation, void * Param);
void __fastcall DDDownload(TStrings * FilesToCopy,
const UnicodeString TargetDir, const TCopyParamType * CopyParam, int Params);
void __fastcall DDDownload(
TStrings * FilesToCopy, const UnicodeString & TargetDir, TCopyParamType * CopyParam, int Params);
bool __fastcall EnsureCommandSessionFallback(TFSCapability Capability);
bool __fastcall CommandSessionFallback();
void __fastcall FileTerminalRemoved(const UnicodeString FileName,