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)); } }); }
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); } }