io.vlingo.actors.SmallestMailboxRouter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of vlingo-actors Show documentation
Show all versions of vlingo-actors Show documentation
Type safe Actor Model toolkit for reactive concurrency and resiliency using Java and other JVM languages.
// Copyright © 2012-2018 Vaughn Vernon. All rights reserved.
//
// This Source Code Form is subject to the terms of the
// Mozilla Public License, v. 2.0. If a copy of the MPL
// was not distributed with this file, You can obtain
// one at https://mozilla.org/MPL/2.0/.
package io.vlingo.actors;
/**
* SmallestMailboxRouter
*/
public class SmallestMailboxRouter extends Router
{
public SmallestMailboxRouter(final RouterSpecification
specification) {
super(specification);
}
/* @see io.vlingo.actors.Router#computeRouting() */
@Override
protected Routing
computeRouting() {
Routee
least = null;
int leastCount = Integer.MAX_VALUE;
for (Routee
routee : routees()) {
int count = routee.pendingMessages();
if (count == 0) {
least = routee;
break;
}
else if (count < leastCount) {
least = routee;
leastCount = count;
}
}
return Routing.with(least);
}
}