Exemple #1
0
 /// <summary>
 /// Resumes this worker
 /// </summary>
 void ITaskProcessor.Resume()
 {
     lastActivity = DateTime.Now;
     suspendedEvent.Reset();
     suspendEvent.Set();
     currentState = TaskProcessorState.Running;
 }
Exemple #2
0
 /// <inheritdoc />
 public void NotifyStateChanged(Guid taskProcessorId, TaskProcessorState state)
 {
     foreach (ITaskProcessorMessageBusSender mb in this)
     {
         mb.NotifyStateChanged(taskProcessorId, state);
     }
 }
Exemple #3
0
 /// <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;
 }
Exemple #5
0
 /// <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));
        }
Exemple #7
0
        /// <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));
            }
        }
Exemple #9
0
 /// <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;
 }
Exemple #10
0
 /// <summary>
 /// Starts the thread
 /// </summary>
 void ITaskProcessor.StartupThread()
 {
     Task.Run(Work);
     startupWait.WaitOne();
     currentState = TaskProcessorState.Running;
 }
Exemple #11
0
 /// <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;
 }
Exemple #12
0
 /// <summary>
 /// Waits until this worker has stopped
 /// </summary>
 void ITaskProcessor.Join()
 {
     currentState = TaskProcessorState.Stopping;
     workerTask.GetAwaiter().GetResult();
     currentState = TaskProcessorState.Stopped;
 }
Exemple #13
0
        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;
 }