syndicate-java/src/test/java/org/syndicate_lang/actors/example/example2/Forwarder.java

27 lines
821 B
Java

package org.syndicate_lang.actors.example.example2;
import java.util.List;
public class Forwarder implements IForwarder {
private final int _index;
private final List<IForwarder> _actors;
private final IForwarder _main;
private final int _nActors;
private final int _nRounds;
public Forwarder(int index, List<IForwarder> actors, IForwarder main, int nActors, int nRounds) {
this._index = index;
this._actors = actors;
this._main = main;
this._nActors = nActors;
this._nRounds = nRounds;
}
@Override
public void handleMessage(int hopCount) {
int index = (this._index + 1) % this._nActors;
IForwarder target = hopCount >= this._nRounds - 1 ? _main : this._actors.get(index);
target.handleMessage(hopCount + 1);
}
}