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

27 lines
767 B
Java
Raw Normal View History

2020-12-04 22:25:40 +00:00
package org.syndicate_lang.actors.example.example2;
import org.syndicate_lang.actors.Actor;
import org.syndicate_lang.actors.Remote;
2020-12-04 22:25:40 +00:00
public class Forwarder implements IForwarder {
private final Remote<IForwarder> _main;
2020-12-04 22:25:40 +00:00
private final int _nRounds;
private Remote<IForwarder> _peer = null;
2020-12-04 22:25:40 +00:00
public Forwarder(Remote<IForwarder> main, int nRounds) {
2020-12-04 22:25:40 +00:00
this._main = main;
this._nRounds = nRounds;
}
@Override
public void setPeer(Remote<IForwarder> peer) {
this._peer = peer;
2020-12-04 22:25:40 +00:00
}
@Override
public void handleMessage(Actor _ac, final int hopCount) {
Remote<IForwarder> target = hopCount >= this._nRounds - 1 ? _main : _peer;
target.async((f, ac) -> f.handleMessage(ac, hopCount + 1));
2020-12-04 22:25:40 +00:00
}
}