package fj.demo.concurrent; import fj.Unit; import fj.P1; import fj.control.parallel.Actor; import static fj.control.parallel.Actor.actor; import fj.control.parallel.Strategy; import fj.function.Effect1; /** * Receives Ping messages concurrently and responds with a Pong message. */ public class Pong { private final Actor<Ping> p; public Pong(final Strategy<Unit> s) { p = actor(s, new Effect1<Ping>() { public void f(final Ping m) { m.act(Pong.this); } }); } // Receive a ping public final P1<Unit> act(final Ping ping) { return p.act(ping); } }