/// <summary>
 /// Creates a new trigger instance.
 /// </summary>
 /// <param name="tasks">The tasks handler.</param>
 /// <param name="task">The task.</param>
 /// <param name="interval">The delay interval to a restart after a failure.</param>
 /// <param name="maximum">The maximum number of restarts.</param>
 public CrawlerTriggerTaskRestart(ICrawlerTasks tasks, CrawlerTask task, TimeSpan interval, uint maximum)
     : base(tasks, task)
 {
     this.interval = interval;
     this.maximum = maximum;
     this.count = 0;
 }
 /// <summary>
 /// Creates a new trigger instance.
 /// </summary>
 /// <param name="tasks">The tasks handler.</param>
 public CrawlerTrigger(ICrawlerTasks tasks)
 {
     // Validate the arguments.
     if (null == tasks) throw new ArgumentNullException("tasks");
     // Set the tasks handler.
     this.tasks = tasks;
 }
        /// <summary>
        /// Creates a new trigger instance.
        /// </summary>
        /// <param name="tasks">The tasks handler.</param>
        /// <param name="schedule">The schedule.</param>
        public CrawlerTriggerSchedule(ICrawlerTasks tasks, CrawlerSchedule schedule)
            : base(tasks)
        {
            // Validate the arguments.
            if (null == schedule) throw new ArgumentNullException("schedule");

            // Set the schedule.
            this.schedule = schedule;
        }
        /// <summary>
        /// Creates a new crawler task instance.
        /// </summary>
        /// <param name="tasks">The tasks handler.</param>
        /// <param name="name">The task name.</param>
        public CrawlerTask(ICrawlerTasks tasks, string name)
        {
            // Set the task properties.
            this.Id = Guid.NewGuid();
            this.Name = name;

            // Create the task event arguments.
            this.args = new CrawlerTaskEventArgs(this);

            // Create the task triggers.
            this.triggerRestart = new CrawlerTriggerTaskRestart(tasks, this, this.restartAfterFailureInterval, this.restartAfterFailureMaximum);
        }
 /// <summary>
 /// Creates a new trigger instance.
 /// </summary>
 /// <param name="tasks">The tasks handler.</param>
 /// <param name="task">The task.</param>
 public CrawlerTriggerTask(ICrawlerTasks tasks, CrawlerTask task)
     : base(tasks)
 {
     // Set the task.
     this.task = task;
 }
 /// <summary>
 /// Creates a new trigger instance.
 /// </summary>
 /// <param name="tasks">The tasks handler.</param>
 /// <param name="task">The task.</param>
 /// <param name="interval">The delay interval to a restart after a failure.</param>
 public CrawlerTriggerTaskStop(ICrawlerTasks tasks, CrawlerTask task, CrawlerTask.RunningTaskState state, TimeSpan interval)
     : base(tasks, task)
 {
     this.state = state;
     this.interval = interval;
 }