//$ java -cp modules/cli/target/classes/';'modules/core/target/classes';'modules/trace/target/classes';'modules/parser/target/classes';c:\Users\Raymond\.m2\repository\org\antlr\antlr-runtime\3.2\antlr-runtime-3.2.jar;'modules/validation/target/classes/';'modules/projection/target/classes/';C:\Users\Raymond\.m2\repository\org\codehaus\jackson\jackson-mapper-asl\1.9.9\jackson-mapper-asl-1.9.9.jar;C:\Users\Raymond\.m2\repository\org\codehaus\jackson\jackson-core-asl\1.9.9\jackson-core-asl-1.9.9.jar' org.scribble2.cli.CommandLine -path modules/validation/src/test/scrib/src modules/validation/src/test/scrib/src/Test.scr -session Foo -d modules/validation/src/main/java //$ java -cp modules/cli/target/classes/';'modules/core/target/classes';'modules/trace/target/classes';'modules/parser/target/classes';c:\Users\Raymond\.m2\repository\org\antlr\antlr-runtime\3.2\antlr-runtime-3.2.jar;'modules/validation/target/classes/';'modules/projection/target/classes/';C:\Users\Raymond\.m2\repository\org\codehaus\jackson\jackson-mapper-asl\1.9.9\jackson-mapper-asl-1.9.9.jar;C:\Users\Raymond\.m2\repository\org\codehaus\jackson\jackson-core-asl\1.9.9\jackson-core-asl-1.9.9.jar' org.scribble2.cli.CommandLine -path modules/validation/src/test/scrib/src modules/validation/src/test/scrib/src/Test.scr -api Foo A -d modules/validation/src/main/java package scratch.scratch1; import java.io.IOException; import org.scribble.main.ScribbleRuntimeException; import org.scribble.net.ObjectStreamFormatter; import org.scribble.net.session.MPSTEndpoint; import org.scribble.net.session.SocketChannelEndpoint; import scratch.scratch1.Scratch1.Proto1.Proto1; import scratch.scratch1.Scratch1.Proto1.channels.C.Proto1_C_1; import scratch.scratch1.Scratch1.Proto1.channels.C.Proto1_C_2; import scratch.scratch1.Scratch1.Proto1.channels.C.ioifaces.Receive_C_S_3_Int; import scratch.scratch1.Scratch1.Proto1.channels.C.ioifaces.Select_C_S_1; import scratch.scratch1.Scratch1.Proto1.channels.C.ioifaces.Select_C_S_2_Int__S_4a; import scratch.scratch1.Scratch1.Proto1.channels.C.ioifaces.Select_C_S_4b; import scratch.scratch1.Scratch1.Proto1.channels.C.ioifaces.Succ_Out_S_4a; import scratch.scratch1.Scratch1.Proto1.roles.C; public class MyC { // refactor separate io iface generators // fix action string canonical ordering // subtype hierarchy / io iface for handler iface public static void main(String[] args) throws Exception { Proto1 adder = new Proto1(); try (MPSTEndpoint<Proto1, C> se = new MPSTEndpoint<>(adder, Proto1.C, new ObjectStreamFormatter())) { se.connect(Proto1.S, SocketChannelEndpoint::new, "localhost", 8888); Proto1_C_2 s2 = new Proto1_C_1(se).send(Proto1.S, Proto1._1); /*for (int i = 0; i < 3; i++) { s2 = s2.send(Proto1.S, Proto1._2, 123) .async(Proto1.S, Proto1._3) .send(Proto1.S, Proto1._1); } s2.send(Proto1.S, Proto1._4).end();*/ /*for (int i = 0; i < 3; i++) { s1 = s1.send(Proto1.S, Proto1._1) .send(Proto1.S, Proto1._2, 123) .receive(Proto1.S, Proto1._3, new Buff<>()); } s1.send(Proto1.S, Proto1._1).send(Proto1.S, Proto1._4).end();*/ foo(s2, 0).to(Select_C_S_4b.cast).send(Proto1.S, Proto1._4b); } } static Succ_Out_S_4a foo(Select_C_S_2_Int__S_4a<?, ?> s, int i) throws ScribbleRuntimeException, IOException { return (i < 3) ? foo( s.send(Proto1.S, Proto1._2, 123) .to(Receive_C_S_3_Int.cast).async(Proto1.S, Proto1._3) .to(Select_C_S_1.cast).send(Proto1.S, Proto1._1).to(Select_C_S_2_Int__S_4a.cast), i + 1) //Select_C_S_2_Int__S_4.cast : s.send(Proto1.S, Proto1._4a); } }