Moved livecontrol to own method.

This commit is contained in:
verhoek
2019-02-25 12:34:32 +01:00
parent f7ccb75e13
commit e1e29962e3
+29 -27
View File
@@ -195,9 +195,9 @@ namespace Duplicati.Server
//Find commandline options here for handling special startup cases
var args = new List<string>(_args);
var argtuple = Library.Utility.FilterCollector.ExtractOptions(new List<string>(args));
var commandlineOptions = argtuple.Item1;
var filter = argtuple.Item2;
var optionsWithFilter = Library.Utility.FilterCollector.ExtractOptions(new List<string>(args));
var commandlineOptions = optionsWithFilter.Item1;
var filter = optionsWithFilter.Item2;
if (_args.Select(s => s.ToLower()).Intersect(alternativeHelpStrings.ConvertAll(x => x.ToLower())).Any())
{
@@ -212,7 +212,7 @@ namespace Duplicati.Server
Library.Utility.SystemContextSettings.StartSession();
var parameterFileOption = commandlineOptions.Keys.Select(s => s.ToLower())
.Intersect(parameterFileOptionStrings.ConvertAll(x => x.ToLower())).FirstOrDefault();
.Intersect(parameterFileOptionStrings.ConvertAll(x => x.ToLower())).FirstOrDefault();
if (parameterFileOption != null && !string.IsNullOrEmpty(commandlineOptions[parameterFileOption]))
{
@@ -248,22 +248,19 @@ namespace Duplicati.Server
SetPurgeTempFilesTimer(commandlineOptions);
LiveControl = new LiveControls(DataConnection.ApplicationSettings);
LiveControl.StateChanged += new EventHandler(LiveControl_StateChanged);
LiveControl.ThreadPriorityChanged += new EventHandler(LiveControl_ThreadPriorityChanged);
LiveControl.ThrottleSpeedChanged += new EventHandler(LiveControl_ThrottleSpeedChanged);
SetLiveControls();
Program.WorkThread = new Duplicati.Library.Utility.WorkerThread<Runner.IRunnerData>((x) =>
{
Runner.Run(x, true);
}, LiveControl.State == LiveControls.LiveControlState.Paused);
Program.Scheduler = new Scheduler(WorkThread);
WorkThread = new Duplicati.Library.Utility.WorkerThread<Runner.IRunnerData>((x) =>
{
Runner.Run(x, true);
}, LiveControl.State == LiveControls.LiveControlState.Paused);
Scheduler = new Scheduler(WorkThread);
Program.WorkThread.StartingWork += (worker, task) => { SignalNewEvent(null, null); };
Program.WorkThread.CompletedWork += (worker, task) => { SignalNewEvent(null, null); };
Program.WorkThread.WorkQueueChanged += (worker) => { SignalNewEvent(null, null); };
Program.Scheduler.NewSchedule += new EventHandler(SignalNewEvent);
Program.WorkThread.OnError += (worker, task, exception) => { Program.DataConnection.LogError(task?.BackupID, "Error in worker", exception); };
WorkThread.StartingWork += (worker, task) => { SignalNewEvent(null, null); };
WorkThread.CompletedWork += (worker, task) => { SignalNewEvent(null, null); };
WorkThread.WorkQueueChanged += (worker) => { SignalNewEvent(null, null); };
Scheduler.NewSchedule += new EventHandler(SignalNewEvent);
WorkThread.OnError += (worker, task, exception) => { Program.DataConnection.LogError(task?.BackupID, "Error in worker", exception); };
var lastScheduleId = LastDataUpdateID;
Program.StatusEventNotifyer.NewEvent += (sender, e) =>
@@ -315,11 +312,10 @@ namespace Duplicati.Server
catch (SingleInstance.MultipleInstanceException mex)
{
System.Diagnostics.Trace.WriteLine(Strings.Program.SeriousError(mex.ToString()));
if (writeToConsole)
{
Console.WriteLine(Strings.Program.SeriousError(mex.ToString()));
return 100;
}
if (!writeToConsole) throw;
Console.WriteLine(Strings.Program.SeriousError(mex.ToString()));
return 100;
throw;
}
@@ -359,6 +355,14 @@ namespace Duplicati.Server
return 0;
}
private static void SetLiveControls()
{
LiveControl = new LiveControls(DataConnection.ApplicationSettings);
LiveControl.StateChanged += LiveControl_StateChanged;
LiveControl.ThreadPriorityChanged += LiveControl_ThreadPriorityChanged;
LiveControl.ThrottleSpeedChanged += LiveControl_ThrottleSpeedChanged;
}
private static void SetPurgeTempFilesTimer(Dictionary<string, string> commandlineOptions)
{
var lastPurge = new DateTime(0);
@@ -694,16 +698,14 @@ namespace Duplicati.Server
{
WorkThread.Pause();
var t = WorkThread.CurrentTask;
if (t != null)
t.Pause();
t?.Pause();
break;
}
case LiveControls.LiveControlState.Running:
{
WorkThread.Resume();
var t = WorkThread.CurrentTask;
if (t != null)
t.Resume();
t?.Resume();
break;
}
}