//The signature might look funky. Why not just Router(RoutingLogic logic, params ActorRef[] routees) ?
//We need one unique constructor to handle this call: new Router(logic). The other constructor will handle that.
//So in order to not confuse the compiler we demand at least one ActorRef. /@hcanber
public Router(RoutingLogic logic, IActorRef routee, params IActorRef[] routees)
{
var routeesLength = routees.Length;
if (routees == null || routeesLength == 0)
{
_routees = new[] { Routee.FromActorRef(routee) };
}
else
{
//Convert and put routee first in a new array
var rts = new Routee[routeesLength + 1];
rts[0] = Routee.FromActorRef(routee);
//Convert all routees and put them into the new array
for (var i = 0; i < routeesLength; i++)
{
var actorRef = routees[i];
var r = Routee.FromActorRef(actorRef);
rts[i + 1] = r;
}
_routees = rts;
}
_logic = logic;
}