Example #1
0
        /// <summary>
        /// Initialises a new Throttle class with a nested resiliency pattern invoker.
        /// </summary>
        /// <param name="limit">The maximum concurrent executions.</param>
        /// <param name="nestedInvoker">The invoker to pass the command onto.</param>
        public Throttle(int limit, ResiliencyCommandInvoker nestedInvoker)
        {
            if (limit < 1)
            {
                throw new ArgumentOutOfRangeException("limit", "The limit cannot be less than one.");
            }

            this.semaphore = new SemaphoreSuperSlim(limit);
            this.invoker   = nestedInvoker;
        }
 public void TestInitialize()
 {
     this.stateMachine = new Mock <CircuitBreakerStateMachine>();
     this.settings     = new CircuitBreakerSettings();
     this.invoker      = new InnerCommandInvoker();
     this.parameters   = new CircuitBreakerStateParameters
     {
         stateMachine = this.stateMachine.Object,
         settings     = this.settings,
         invoker      = this.invoker
     };
 }
Example #3
0
        /// <summary>
        /// Initialises a new circuit breaker using the supplied settings with a nested resiliency pattern invoker.
        /// </summary>
        /// <param name="settings">Settings to configure the circuit breaker.</param>
        /// <param name="nestedInvoker">The invoker to pass the command onto.</param>
        public CircuitBreaker(CircuitBreakerSettings settings, ResiliencyCommandInvoker nestedInvoker)
        {
            if (settings == null)
            {
                settings = new CircuitBreakerSettings();
            }
            var parameters = new CircuitBreakerStateParameters
            {
                settings = settings,
                invoker  = nestedInvoker
            };

            this.stateMachine       = new CircuitBreakerStateMachineImpl(new CircuitBreakerStateNormal(parameters));
            parameters.stateMachine = this.stateMachine;
            this.AttachToStateChangeEvent();
        }