Akka.Actor.ActorCell.HandleFailed C# (CSharp) Method

HandleFailed() private method

private HandleFailed ( Failed f ) : void
f Akka.Dispatch.SysMsg.Failed
return void
        private void HandleFailed(Failed f) //Called handleFailure in Akka JVM
        {
            CurrentMessage = f;
            var failedChild = f.Child;
            var failedChildIsNobody = failedChild.IsNobody();
            Sender = failedChildIsNobody ? _systemImpl.DeadLetters : failedChild;
            //Only act upon the failure, if it comes from a currently known child;
            //the UID protects against reception of a Failed from a child which was
            //killed in preRestart and re-created in postRestart

            ChildRestartStats childStats;
            if (TryGetChildStatsByRef(failedChild, out childStats))
            {
                var statsUid = childStats.Child.Path.Uid;
                if (statsUid == f.Uid)
                {
                    var handled = _actor.SupervisorStrategyInternal.HandleFailure(this, f.Cause, childStats, ChildrenContainer.Stats);
                    if (!handled)
                        ExceptionDispatchInfo.Capture(f.Cause).Throw();
                }
                else
                {
                    Publish(new Debug(_self.Path.ToString(), _actor.GetType(), "Dropping Failed(" + f.Cause + ") from old child " + f.Child + " (uid=" + statsUid + " != " + f.Uid + ")"));
                }
            }
            else
            {
                Publish(new Debug(_self.Path.ToString(), _actor.GetType(), "Dropping Failed(" + f.Cause + ") from unknown child " + failedChild));
            }
        }