/// <summary> /// Resumes this worker /// </summary> void ITaskProcessor.Resume() { lastActivity = DateTime.Now; suspendedEvent.Reset(); suspendEvent.Set(); currentState = TaskProcessorState.Running; }
/// <inheritdoc /> public void NotifyStateChanged(Guid taskProcessorId, TaskProcessorState state) { foreach (ITaskProcessorMessageBusSender mb in this) { mb.NotifyStateChanged(taskProcessorId, state); } }
/// <summary> /// Sets this worker into a wait-state /// </summary> void ITaskProcessor.Suspend() { currentState = TaskProcessorState.Stopping; suspendEvent.Reset(); suspendedEvent.WaitOne(); currentState = TaskProcessorState.Stopped; }
/// <summary> /// Starts the thread /// </summary> void ITaskProcessor.StartupThread() { workerThread = new Thread(Work); workerThread.Start(); startupWait.WaitOne(); currentState = TaskProcessorState.Running; }
/// <summary> /// Kills the thread that is powering this processor /// </summary> void ITaskProcessor.KillThread() { suspendEvent.Set(); suspendedEvent.Reset(); startupWait.Reset(); currentState = TaskProcessorState.Idle; //enterprocessingLoopWait.Reset(); }
private void DoNotAddTaskProcessorRegisteredMasterCommandIfStateIsNotActive(TaskProcessorState state) { Guid taskProcessorId = Guid.NewGuid(); this.Sender.NotifyStateChanged(taskProcessorId, state); Thread.Sleep(this.Timeout); Assert.IsFalse(this.MasterCommands.OfType <TaskProcessorRegisteredMasterCommand>().Any(c => c.TaskProcessorId == taskProcessorId)); }
/// <inheritdoc /> public void NotifyStateChanged(Guid taskProcessorId, TaskProcessorState state) { Trace.WriteLine("ENTER: Notifying task processor '{0}' state changed to {1} ...".FormatInvariant(taskProcessorId, state)); if (state == TaskProcessorState.Active) { this.masterCommandsQueue.Push(new TaskProcessorRegisteredMasterCommand(taskProcessorId)); } Trace.WriteLine("EXIT: Task processor '{0}' state changed to {1} notified.".FormatInvariant(taskProcessorId, state)); }
public void NotifyStateChanged(Guid taskProcessorId, TaskProcessorState state) { this.RecordMethodCall(taskProcessorId, state); if (state == TaskProcessorState.Active) { this.MasterCommands.Push(new TaskProcessorRegisteredMasterCommand(taskProcessorId)); } if ((this.StateChanged != null) && this.SubscribedChannels.Contains(MessageBusChannel.TaskProcessorState)) { this.StateChanged(this, new TaskProcessorStateEventArgs(taskProcessorId, state)); } }
/// <summary> /// Initializes a new instance of the <see cref="TaskProcessorStateEventArgs"/> class. /// </summary> /// <param name="taskProcessorId">The ID of the task processor whose state has changed.</param> /// <param name="taskProcessorState">The new state of the task processor.</param> public TaskProcessorStateEventArgs(Guid taskProcessorId, TaskProcessorState taskProcessorState) : base(taskProcessorId) { this.taskProcessorState = taskProcessorState; }
/// <summary> /// Starts the thread /// </summary> void ITaskProcessor.StartupThread() { Task.Run(Work); startupWait.WaitOne(); currentState = TaskProcessorState.Running; }
/// <summary> /// Sets this processor into a zombie mode where it won't process any tasks /// </summary> void ITaskProcessor.Zombie() { LogEnvironment.LogDebugEvent("This TaskProcessor just turned into a zombie!", LogSeverity.Warning); currentState = TaskProcessorState.Zombie; }
/// <summary> /// Waits until this worker has stopped /// </summary> void ITaskProcessor.Join() { currentState = TaskProcessorState.Stopping; workerTask.GetAwaiter().GetResult(); currentState = TaskProcessorState.Stopped; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { TaskProcessorState allowedValue = (TaskProcessorState)Enum.Parse(typeof(TaskProcessorState), (string)parameter); return((TaskProcessorState)value == allowedValue); }
/// <summary> /// Waits until this worker has stopped /// </summary> void ITaskProcessor.Join() { currentState = TaskProcessorState.Stopping; workerThread.Join(); currentState = TaskProcessorState.Stopped; }