package test.foo; import java.io.IOException; import org.scribble.main.ScribbleRuntimeException; import org.scribble.net.ObjectStreamFormatter; import org.scribble.net.scribsock.ScribServerSocket; import org.scribble.net.scribsock.SocketChannelServer; import org.scribble.net.session.MPSTEndpoint; import test.foo.Foo.Foo.Foo; import test.foo.Foo.Foo.channels.B.Foo_B_1; import test.foo.Foo.Foo.channels.B.Foo_B_1_Cases; import test.foo.Foo.Foo.channels.C.Foo_C_1; import test.foo.Foo.Foo.channels.C.Foo_C_1_Cases; import test.foo.Foo.Foo.roles.B; import test.foo.Foo.Foo.roles.C; public class MyBC { public static void main(String[] args) throws IOException, ScribbleRuntimeException, InterruptedException { try (ScribServerSocket ss_B = new SocketChannelServer(8888); ScribServerSocket ss_C = new SocketChannelServer(9999)) { //Buff<String> s = new Buff<>(); while (true) { Foo foo = new Foo(); Thread B = new Thread() { public void run() { try (MPSTEndpoint<Foo, B> se_B = new MPSTEndpoint<>(foo, Foo.B, new ObjectStreamFormatter())) { se_B.accept(ss_B, Foo.A); Foo_B_1 s1_B = new Foo_B_1(se_B); Foo_B_1_Cases s1cases_B = s1_B.branch(Foo.A); switch (s1cases_B.op) { case _1: { s1cases_B.receive(Foo._1); System.out.println("B first!"); break; } case _2: { s1cases_B.receive(Foo._2); break; } } } catch (ScribbleRuntimeException | IOException | ClassNotFoundException e) { e.printStackTrace(); } } }; Thread C = new Thread() { public void run() { try (MPSTEndpoint<Foo, C> se_C = new MPSTEndpoint<>(foo, Foo.C, new ObjectStreamFormatter())) { se_C.accept(ss_C, Foo.A); Foo_C_1 s1_C = new Foo_C_1(se_C); Foo_C_1_Cases s1cases_C = s1_C.branch(Foo.A); switch (s1cases_C.op) { case _1: { s1cases_C.receive(Foo._1); System.out.println("C first!"); break; } case _2: { s1cases_C.receive(Foo._2); break; } } } catch (ScribbleRuntimeException | IOException | ClassNotFoundException e) { e.printStackTrace(); } } }; B.start(); C.start(); B.join(); C.join(); } } } }