internal StateMachineSubscription Dequeue() { StateMachineSubscription subscription = this.EventQueue[0]; this.EventQueue.RemoveAt(0); return(subscription); }
internal void Enqueue(ActivityExecutionContext context, IComparable queueName) { StateMachineSubscription item = this.GetSubscription(queueName); if (item != null) { this.EventQueue.Add(item); } this.ProcessQueue(context); }
internal void Enqueue(ActivityExecutionContext context, Guid subscriptionId) { StateMachineSubscription item = this.GetSubscription(subscriptionId); if (item != null) { this.EventQueue.Add(item); } this.ProcessQueue(context); }
internal void Enqueue(ActivityExecutionContext context, IComparable queueName) { StateMachineSubscription subscription = GetSubscription(queueName); if (subscription != null) { // subscription can be null if we already unsubscribed to // this event this.EventQueue.Add(subscription); } ProcessQueue(context); }
internal void ProcessQueue(ActivityExecutionContext context) { StateActivity currentState = StateMachineHelpers.GetCurrentState(context); if (this.EventQueue.Count == 0 || this.ExecutionState.HasEnqueuedActions || this.ExecutionState.SchedulerBusy || currentState == null) { return; } StateMachineSubscription subscription = Dequeue(); subscription.ProcessEvent(context); }