/// <summary> /// Initializes a new instance of the <see cref="ControlledRuntime"/> class. /// </summary> internal ControlledRuntime(Configuration configuration, ISchedulingStrategy strategy, IRandomValueGenerator valueGenerator) : base(configuration, valueGenerator) { IsExecutionControlled = true; this.RootTaskId = Task.CurrentId; this.NameValueToActorId = new ConcurrentDictionary <string, ActorId>(); this.CoverageInfo = new CoverageInfo(); var scheduleTrace = new ScheduleTrace(); if (configuration.IsLivenessCheckingEnabled) { strategy = new TemperatureCheckingStrategy(configuration, this.Monitors, strategy); } this.Scheduler = new OperationScheduler(this, strategy, scheduleTrace, this.Configuration); this.TaskController = new TaskController(this, this.Scheduler); // Update the current asynchronous control flow with this runtime instance, // allowing future retrieval in the same asynchronous call stack. AssignAsyncControlFlowRuntime(this); }
/// <summary> /// Initializes a new instance of the <see cref="ControlledRuntime"/> class. /// </summary> internal ControlledRuntime(Configuration configuration, ISchedulingStrategy strategy, IRandomValueGenerator valueGenerator) : base(configuration, valueGenerator) { IncrementExecutionControlledUseCount(); this.RootTaskId = Task.CurrentId; this.NameValueToActorId = new ConcurrentDictionary <string, ActorId>(); this.CoverageInfo = new CoverageInfo(); var scheduleTrace = new ScheduleTrace(); if (configuration.IsLivenessCheckingEnabled) { strategy = new TemperatureCheckingStrategy(configuration, this.Monitors, strategy); } this.Scheduler = new OperationScheduler(this, strategy, scheduleTrace, this.Configuration); this.TaskController = new TaskController(this, this.Scheduler); }