package coco.fibo; import static coco.fibo.Fibo.Fibonacci.Fibonacci.A; import static coco.fibo.Fibo.Fibonacci.Fibonacci.B; import static coco.fibo.Fibo.Fibonacci.Fibonacci.fibonacci; import java.io.IOException; import org.scribble.main.ScribbleRuntimeException; import org.scribble.net.Buf; import org.scribble.net.ObjectStreamFormatter; import org.scribble.net.scribsock.ScribServerSocket; import org.scribble.net.scribsock.SocketChannelServer; import org.scribble.net.session.MPSTEndpoint; import coco.fibo.Fibo.Fibonacci.Fibonacci; import coco.fibo.Fibo.Fibonacci.channels.B.EndSocket; import coco.fibo.Fibo.Fibonacci.channels.B.Fibonacci_B_1; import coco.fibo.Fibo.Fibonacci.channels.B.Fibonacci_B_1_Handler; import coco.fibo.Fibo.Fibonacci.channels.B.Fibonacci_B_2; import coco.fibo.Fibo.Fibonacci.ops.fibonacci; import coco.fibo.Fibo.Fibonacci.ops.stop; import coco.fibo.Fibo.Fibonacci.roles.B; public class FiboBHandler extends Thread implements Fibonacci_B_1_Handler { private final Fibonacci fib; private long x = 1; public FiboBHandler(Fibonacci fib) { this.fib = fib; } @Override public void run() { try ( ScribServerSocket ss = new SocketChannelServer(8888); MPSTEndpoint<Fibonacci, B> se = new MPSTEndpoint<>(this.fib, B, new ObjectStreamFormatter())) { se.accept(ss, A); new Fibonacci_B_1(se).branch(A, this); } catch (Exception x) { x.printStackTrace(); } } /* } /*/ @Override public void receive(Fibonacci_B_2 s2, fibonacci op, Buf<Long> arg1) throws ScribbleRuntimeException, IOException, ClassNotFoundException { s2.send(A, fibonacci, (this.x += arg1.val)).branch(A, this); } @Override public void receive(EndSocket end, stop op) throws ScribbleRuntimeException, IOException, ClassNotFoundException { //System.out.println("B done: " + this.x); } } //*/