Removed unnecessary CoCoL channel scope
This commit is contained in:
@@ -332,47 +332,44 @@ namespace Duplicati.Library.Main.Operation
|
||||
CreateDirectoryStructure(database, m_options, m_result);
|
||||
database.SetResult(m_result);
|
||||
|
||||
using (new ChannelScope())
|
||||
{
|
||||
// Create the channels between BlockManager and FileProcessor
|
||||
var fileprocessor_requests = new Channel<Restore.BlockRequest>[m_options.RestoreFileProcessors].Select(_ => ChannelManager.CreateChannel<Restore.BlockRequest>(buffersize:Restore.Channels.BufferSize)).ToArray();
|
||||
var fileprocessor_responses = new Channel<byte[]>[m_options.RestoreFileProcessors].Select(_ => ChannelManager.CreateChannel<byte[]>(buffersize:Restore.Channels.BufferSize)).ToArray();
|
||||
// Create the channels between BlockManager and FileProcessor
|
||||
var fileprocessor_requests = new Channel<Restore.BlockRequest>[m_options.RestoreFileProcessors].Select(_ => ChannelManager.CreateChannel<Restore.BlockRequest>(buffersize:Restore.Channels.BufferSize)).ToArray();
|
||||
var fileprocessor_responses = new Channel<byte[]>[m_options.RestoreFileProcessors].Select(_ => ChannelManager.CreateChannel<byte[]>(buffersize:Restore.Channels.BufferSize)).ToArray();
|
||||
|
||||
// Create the process network
|
||||
Restore.Channels channels = new ();
|
||||
var filelister = Restore.FileLister.Run(channels, database, m_options, m_result);
|
||||
var fileprocessors = Enumerable.Range(0, m_options.RestoreFileProcessors).Select(i => Restore.FileProcessor.Run(channels, database, fileprocessor_requests[i], fileprocessor_responses[i], m_options, m_result)).ToArray();
|
||||
var blockmanager = Restore.BlockManager.Run(channels, database, m_options, fileprocessor_requests, fileprocessor_responses);
|
||||
var volumecache = Restore.VolumeManager.Run(channels, database, backend, m_options, m_result);
|
||||
var volumedownloaders = Enumerable.Range(0, m_options.RestoreVolumeDownloaders).Select(i => Restore.VolumeDownloader.Run(channels, database, m_options, m_result)).ToArray();
|
||||
var volumedecryptors = Enumerable.Range(0, m_options.RestoreVolumeDecryptors).Select(i => Restore.VolumeDecryptor.Run(channels, m_options)).ToArray();
|
||||
var volumedecompressors = Enumerable.Range(0, m_options.RestoreVolumeDecompressors).Select(i => Restore.VolumeDecompressor.Run(channels, m_options)).ToArray();
|
||||
// Create the process network
|
||||
Restore.Channels channels = new ();
|
||||
var filelister = Restore.FileLister.Run(channels, database, m_options, m_result);
|
||||
var fileprocessors = Enumerable.Range(0, m_options.RestoreFileProcessors).Select(i => Restore.FileProcessor.Run(channels, database, fileprocessor_requests[i], fileprocessor_responses[i], m_options, m_result)).ToArray();
|
||||
var blockmanager = Restore.BlockManager.Run(channels, database, m_options, fileprocessor_requests, fileprocessor_responses);
|
||||
var volumecache = Restore.VolumeManager.Run(channels, database, backend, m_options, m_result);
|
||||
var volumedownloaders = Enumerable.Range(0, m_options.RestoreVolumeDownloaders).Select(i => Restore.VolumeDownloader.Run(channels, database, m_options, m_result)).ToArray();
|
||||
var volumedecryptors = Enumerable.Range(0, m_options.RestoreVolumeDecryptors).Select(i => Restore.VolumeDecryptor.Run(channels, m_options)).ToArray();
|
||||
var volumedecompressors = Enumerable.Range(0, m_options.RestoreVolumeDecompressors).Select(i => Restore.VolumeDecompressor.Run(channels, m_options)).ToArray();
|
||||
|
||||
// Wait for the network to complete
|
||||
Task[] all =
|
||||
[
|
||||
filelister,
|
||||
..fileprocessors,
|
||||
blockmanager,
|
||||
volumecache,
|
||||
..volumedownloaders,
|
||||
..volumedecryptors,
|
||||
..volumedecompressors
|
||||
];
|
||||
// Wait for the network to complete
|
||||
Task[] all =
|
||||
[
|
||||
filelister,
|
||||
..fileprocessors,
|
||||
blockmanager,
|
||||
volumecache,
|
||||
..volumedownloaders,
|
||||
..volumedecryptors,
|
||||
..volumedecompressors
|
||||
];
|
||||
|
||||
// Start the progress updater
|
||||
var kill_updater = new CancellationTokenSource();
|
||||
var updater = Task.Run(async () => {
|
||||
while (true)
|
||||
{
|
||||
m_result.OperationProgressUpdater.UpdatefilesProcessed(m_result.RestoredFiles, m_result.SizeOfRestoredFiles);
|
||||
await Task.Delay(1000);
|
||||
}
|
||||
}, kill_updater.Token);
|
||||
// Start the progress updater
|
||||
var kill_updater = new CancellationTokenSource();
|
||||
var updater = Task.Run(async () => {
|
||||
while (true)
|
||||
{
|
||||
m_result.OperationProgressUpdater.UpdatefilesProcessed(m_result.RestoredFiles, m_result.SizeOfRestoredFiles);
|
||||
await Task.Delay(1000);
|
||||
}
|
||||
}, kill_updater.Token);
|
||||
|
||||
Task.WhenAll(all).Wait();
|
||||
kill_updater.Cancel();
|
||||
}
|
||||
Task.WhenAll(all).Wait();
|
||||
kill_updater.Cancel();
|
||||
|
||||
if (m_result.TaskControlRendevouz() == TaskControlState.Stop)
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user