aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs
diff options
context:
space:
mode:
authorLukePulverenti <luke.pulverenti@gmail.com>2013-02-23 02:57:11 -0500
committerLukePulverenti <luke.pulverenti@gmail.com>2013-02-23 02:57:11 -0500
commitb8d5c718429f1325111834b8b95698fc9c9ba47d (patch)
treef7f23b8704380552f25f3edfa3d706455069692e /MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs
parentc165f37bb96ad40d863a436795c21b9085f3fde9 (diff)
type discovery without attributes
Diffstat (limited to 'MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs')
-rw-r--r--MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs75
1 files changed, 49 insertions, 26 deletions
diff --git a/MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs b/MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs
index 395c73a84..845faf31a 100644
--- a/MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs
+++ b/MediaBrowser.Common/ScheduledTasks/BaseScheduledTask.cs
@@ -17,7 +17,7 @@ namespace MediaBrowser.Common.ScheduledTasks
/// </summary>
/// <typeparam name="TKernelType">The type of the T kernel type.</typeparam>
public abstract class BaseScheduledTask<TKernelType> : IScheduledTask
- where TKernelType : IKernel
+ where TKernelType : class, IKernel
{
/// <summary>
/// Gets the kernel.
@@ -26,6 +26,47 @@ namespace MediaBrowser.Common.ScheduledTasks
protected TKernelType Kernel { get; private set; }
/// <summary>
+ /// Gets the logger.
+ /// </summary>
+ /// <value>The logger.</value>
+ protected ILogger Logger { get; private set; }
+
+ /// <summary>
+ /// Gets the task manager.
+ /// </summary>
+ /// <value>The task manager.</value>
+ protected ITaskManager TaskManager { get; private set; }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="BaseScheduledTask{TKernelType}" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="taskManager">The task manager.</param>
+ /// <param name="logger">The logger.</param>
+ /// <exception cref="System.ArgumentNullException">kernel</exception>
+ protected BaseScheduledTask(TKernelType kernel, ITaskManager taskManager, ILogger logger)
+ {
+ if (kernel == null)
+ {
+ throw new ArgumentNullException("kernel");
+ }
+ if (taskManager == null)
+ {
+ throw new ArgumentNullException("taskManager");
+ }
+ if (logger == null)
+ {
+ throw new ArgumentNullException("logger");
+ }
+
+ Kernel = kernel;
+ TaskManager = taskManager;
+ Logger = logger;
+
+ ReloadTriggerEvents(true);
+ }
+
+ /// <summary>
/// The _last execution result
/// </summary>
private TaskResult _lastExecutionResult;
@@ -199,7 +240,7 @@ namespace MediaBrowser.Common.ScheduledTasks
try
{
return JsonSerializer.DeserializeFromFile<IEnumerable<TaskTriggerInfo>>(ConfigurationFilePath)
- .Select(t => ScheduledTaskHelpers.GetTrigger(t, Kernel))
+ .Select(ScheduledTaskHelpers.GetTrigger)
.ToList();
}
catch (IOException)
@@ -228,7 +269,7 @@ namespace MediaBrowser.Common.ScheduledTasks
_triggersInitialized = true;
- ReloadTriggerEvents();
+ ReloadTriggerEvents(false);
JsonSerializer.SerializeToFile(_triggers.Select(ScheduledTaskHelpers.GetTriggerInfo), ConfigurationFilePath);
}
@@ -291,28 +332,10 @@ namespace MediaBrowser.Common.ScheduledTasks
}
/// <summary>
- /// Gets the logger.
- /// </summary>
- /// <value>The logger.</value>
- protected ILogger Logger { get; private set; }
-
- /// <summary>
- /// Initializes the specified kernel.
- /// </summary>
- /// <param name="kernel">The kernel.</param>
- /// <param name="logger">The logger.</param>
- public void Initialize(IKernel kernel, ILogger logger)
- {
- Logger = logger;
-
- Kernel = (TKernelType)kernel;
- ReloadTriggerEvents();
- }
-
- /// <summary>
/// Reloads the trigger events.
/// </summary>
- private void ReloadTriggerEvents()
+ /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param>
+ private void ReloadTriggerEvents(bool isApplicationStartup)
{
foreach (var trigger in Triggers)
{
@@ -320,7 +343,7 @@ namespace MediaBrowser.Common.ScheduledTasks
trigger.Triggered -= trigger_Triggered;
trigger.Triggered += trigger_Triggered;
- trigger.Start();
+ trigger.Start(isApplicationStartup);
}
}
@@ -335,7 +358,7 @@ namespace MediaBrowser.Common.ScheduledTasks
Logger.Info("{0} fired for task: {1}", trigger.GetType().Name, Name);
- Kernel.TaskManager.QueueScheduledTask(this);
+ TaskManager.QueueScheduledTask(this);
}
/// <summary>
@@ -392,7 +415,7 @@ namespace MediaBrowser.Common.ScheduledTasks
CurrentCancellationTokenSource = null;
CurrentProgress = null;
- Kernel.TaskManager.OnTaskCompleted(this);
+ TaskManager.OnTaskCompleted(this);
}
/// <summary>