Class Failed.
Наследование: Akka.Dispatch.SysMsg.SystemMessage
Пример #1
0
        public void SystemMessageList_value_class_must_be_able_to_deconstruct_head_and_tail()
        {
            var create0 = new Failed(null, null, 0);
            var create1 = new Failed(null, null, 1);
            var create2 = new Failed(null, null, 2);
            var list = LNil + create0 + create1 + create2;

            (list.Head == create2).ShouldBeTrue();
            (list.Tail.Head == create1).ShouldBeTrue();
            (list.Tail.Tail.Head == create0).ShouldBeTrue();
            (list.Tail.Tail.Tail.Head == null).ShouldBeTrue();
        }
Пример #2
0
        public void SystemMessageList_value_class_must_be_able_to_append_messages()
        {
            var create0 = new Failed(null, null, 0);
            var create1 = new Failed(null, null, 1);
            var create2 = new Failed(null, null, 2);
            ((LNil + create0).Head == create0).ShouldBeTrue();
            ((LNil + create0 + create1).Head == create1).ShouldBeTrue();
            ((LNil + create0 + create1 + create2).Head == create2).ShouldBeTrue();

            (create2.Next == create1).ShouldBeTrue();
            (create1.Next == create0).ShouldBeTrue();
            (create0.Next == null).ShouldBeTrue();
        }
Пример #3
0
        public void SystemMessageList_value_class_must_be_able_to_properly_report_size_and_emptyness()
        {
            var create0 = new Failed(null, null, 0);
            var create1 = new Failed(null, null, 1);
            var create2 = new Failed(null, null, 2);
            var list = LNil + create0 + create1 + create2;

            list.Size.ShouldBe(3);
            list.IsEmpty.ShouldBeFalse();

            list.Tail.Size.ShouldBe(2);
            list.Tail.IsEmpty.ShouldBeFalse();

            list.Tail.Tail.Size.ShouldBe(1);
            list.Tail.Tail.IsEmpty.ShouldBeFalse();

            list.Tail.Tail.Tail.Size.ShouldBe(0);
            list.Tail.Tail.Tail.IsEmpty.ShouldBeTrue();
        }
Пример #4
0
        public void SystemMessageList_value_class_must_be_able_to_properly_reverse_contents()
        {
            var create0 = new Failed(null, null, 0);
            var create1 = new Failed(null, null, 1);
            var create2 = new Failed(null, null, 2);
            var list = LNil + create0 + create1 + create2;
            EarliestFirstSystemMessageList listRev = list.Reverse;

            listRev.IsEmpty.ShouldBeFalse();
            listRev.Size.ShouldBe(3);

            (listRev.Head == create0).ShouldBeTrue();
            (listRev.Tail.Head == create1).ShouldBeTrue();
            (listRev.Tail.Tail.Head == create2).ShouldBeTrue();
            (listRev.Tail.Tail.Tail.Head == null).ShouldBeTrue();

            (create0.Next == create1).ShouldBeTrue();
            (create1.Next == create2).ShouldBeTrue();
            (create2.Next == null).ShouldBeTrue();
        }
        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)
                        throw f.Cause;
                }
                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));
            }
        }
Пример #6
0
 public FF(Failed fail)
     : this()
 {
     Fail = fail;
 }
 /// <summary>
 ///     Handles the failed.
 /// </summary>
 /// <param name="m">The m.</param>
 private void HandleFailed(Failed m)
 {
     bool handled = _actor.SupervisorStrategyLazy().HandleFailure(this, m.Child, m.Cause);
     if (!handled)
         throw m.Cause;
 }
Пример #8
0
        public void EarliestFirstSystemMessageList_must_properly_prepend_reversed_message_lists_to_the_front()
        {
            var create0 = new Failed(null, null, 0);
            var create1 = new Failed(null, null, 1);
            var create2 = new Failed(null, null, 2);
            var create3 = new Failed(null, null, 3);
            var create4 = new Failed(null, null, 4);
            var create5 = new Failed(null, null, 5);

            var fwdList = ENil + create5 + create4 + create3;
            var revList = LNil + create0 + create1 + create2;

            var list = fwdList + revList;

            (list.Head == create0).ShouldBeTrue();
            (list.Tail.Head == create1).ShouldBeTrue();
            (list.Tail.Tail.Head == create2).ShouldBeTrue();
            (list.Tail.Tail.Tail.Head == create3).ShouldBeTrue();
            (list.Tail.Tail.Tail.Tail.Head == create4).ShouldBeTrue();
            (list.Tail.Tail.Tail.Tail.Tail.Head == create5).ShouldBeTrue();

            ((ENil + LNil).Equals(ENil)).ShouldBeTrue();
            (((ENil + create0) + LNil).Head == create0).ShouldBeTrue();
            ((ENil + (LNil + create0)).Head == create0).ShouldBeTrue();
        }