Beispiel #1
0
        private void RouteRequests(Routee[] routees)
        {
            var routingLogic = new SmallestMailboxRoutingLogic();

            Receive <ConnectionLeaseRequest>(request =>
            {
                var routee = routingLogic.Select(request, routees);
                routee.Send(request, Sender);
            });

            Receive <AddRoutee>(routee =>
            {
                Become(() => RouteRequests(routees.Append(routee.Routee).ToArray()));
            });

            Receive <RemoveRoutee>(routee =>
            {
                var routingList = routees.Where(r => r != routee.Routee).ToArray();
                if (routingList.Length == 0)
                {
                    Become(WaitForRoutee);
                }
                else
                {
                    Become(() => RouteRequests(routingList));
                }
            });
        }
Beispiel #2
0
        public void SmallestMailboxRoutingLogic_must_not_throw_IndexOutOfRangeException_when_counter_wraps_to_be_negative()
        {
            var routees      = new[] { Routee.NoRoutee, Routee.NoRoutee, Routee.NoRoutee };
            var routingLogic = new SmallestMailboxRoutingLogic(int.MaxValue - 5);

            for (var i = 0; i < 10; i++)
            {
                routingLogic.Select(i, routees);
            }
        }