package demo.fase17.travel2; import static demo.fase17.travel2.TravelAgent2.TravelAgent2.TravelAgent2.A; import static demo.fase17.travel2.TravelAgent2.TravelAgent2.TravelAgent2.C; import static demo.fase17.travel2.TravelAgent2.TravelAgent2.TravelAgent2.S; import static demo.fase17.travel2.TravelAgent2.TravelAgent2.TravelAgent2.confirm; import static demo.fase17.travel2.TravelAgent2.TravelAgent2.TravelAgent2.query; import static demo.fase17.travel2.TravelAgent2.TravelAgent2.TravelAgent2.quote; import static demo.fase17.travel2.TravelAgent2.TravelAgent2.TravelAgent2.accpt; import static demo.fase17.travel2.TravelAgent2.TravelAgent2.TravelAgent2.port; import org.scribble.net.Buf; import org.scribble.net.ObjectStreamFormatter; import org.scribble.net.session.ExplicitEndpoint; import org.scribble.net.session.SocketChannelEndpoint; import demo.fase17.travel2.TravelAgent2.TravelAgent2.TravelAgent2; import demo.fase17.travel2.TravelAgent2.TravelAgent2.channels.C.TravelAgent2_C_1; import demo.fase17.travel2.TravelAgent2.TravelAgent2.channels.C.TravelAgent2_C_2; import demo.fase17.travel2.TravelAgent2.TravelAgent2.roles.C; public class Travel2C { public void run() throws Exception { String[] queries = { "aaa", "bbb", "ccc" }; TravelAgent2 sess = new TravelAgent2(); try (ExplicitEndpoint<TravelAgent2, C> se = new ExplicitEndpoint<>(sess, C, new ObjectStreamFormatter())) { Buf<Integer> b = new Buf<>(); TravelAgent2_C_2 C2 = new TravelAgent2_C_1(se) .connect(A, SocketChannelEndpoint::new, "localhost", 8888); for (int i = 0; i < queries.length; i++) { C2 = C2.send(A, query, queries[i]).receive(A, quote, b); } C2.send(A, accpt) .receive(A, port, b) .connect(S, SocketChannelEndpoint::new, "localhost", (Integer) b.val) // FIXME: connect message .receive(S, confirm, b); System.out.println("(C) confirm: " + b.val); } } public static void main(String[] args) throws Exception { new Travel2C().run(); } }