예제 #1
0
        Task ICircuitBreaker.Open(Exception exception, ICircuitBreakerBehavior behavior, IEnumerator <TimeSpan> timeoutEnumerator)
        {
            if (timeoutEnumerator == null)
            {
                timeoutEnumerator = _settings.ResetTimeout.GetEnumerator();
            }

            var openBehavior = new OpenBehavior(this, exception, timeoutEnumerator);

            Interlocked.CompareExchange(ref _behavior, openBehavior, behavior);
            if (_behavior == openBehavior)
            {
                return(_settings.Router?.PublishCircuitBreakerOpened(exception) ?? TaskUtil.Completed);
            }

            return(TaskUtil.Completed);
        }
    private void DoorOpen(NetworkMessage msg)
    {
        OpenBehavior ob = GameObject.Find(msg.ReadMessage <StringMessage>().value).GetComponent <OpenBehavior>();

        ob.DoorOpen();
    }