Akka.Remote.TestKit.Controller.SupervisorStrategy C# (CSharp) 메소드

SupervisorStrategy() 보호된 메소드

Supervision of the BarrierCoordinator means to catch all his bad emotions and sometimes console him (BarrierEmpty, BarrierTimeout), sometimes tell him to hate the world (WrongBarrier, DuplicateNode, ClientLost). The latter shall help terminate broken tests as quickly as possible (i.e. without awaiting BarrierTimeouts in the players).
protected SupervisorStrategy ( ) : Akka.Actor.SupervisorStrategy
리턴 Akka.Actor.SupervisorStrategy
        protected override SupervisorStrategy SupervisorStrategy()
        {
            return new OneForOneStrategy(e =>
            {
                var barrierTimeout = e as BarrierCoordinator.BarrierTimeoutException;
                if (barrierTimeout != null) return FailBarrier(barrierTimeout.BarrierData);
                var failedBarrier = e as BarrierCoordinator.FailedBarrierException;
                if (failedBarrier != null) return FailBarrier(failedBarrier.BarrierData);
                var barrierEmpty = e as BarrierCoordinator.BarrierEmptyException;
                if(barrierEmpty != null) return Directive.Resume;
                var wrongBarrier = e as BarrierCoordinator.WrongBarrierException;
                if (wrongBarrier != null)
                {
                    wrongBarrier.Client.Tell(new ToClient<BarrierResult>(new BarrierResult(wrongBarrier.Barrier, false)));
                    return FailBarrier(wrongBarrier.BarrierData);
                }
                var clientLost = e as BarrierCoordinator.ClientLostException;
                if (clientLost != null) return FailBarrier(clientLost.BarrierData);
                var duplicateNode = e as BarrierCoordinator.DuplicateNodeException;
                if (duplicateNode != null) return FailBarrier(duplicateNode.BarrierData);
                throw new InvalidOperationException(String.Format("Cannot process exception of type {0}", e.GetType()));
            });
        }