package bettybook.http.shortv; import static bettybook.http.shortv.HttpShort.Http.Http.C; import static bettybook.http.shortv.HttpShort.Http.Http.Req; import static bettybook.http.shortv.HttpShort.Http.Http.S; import java.io.IOException; import org.scribble.main.ScribbleRuntimeException; import org.scribble.net.Buf; import org.scribble.net.scribsock.ScribServerSocket; import org.scribble.net.scribsock.SocketChannelServer; import org.scribble.net.session.MPSTEndpoint; import bettybook.http.shortv.HttpShort.Http.Http; import bettybook.http.shortv.HttpShort.Http.channels.S.Http_S_1; import bettybook.http.shortv.HttpShort.Http.channels.S.Http_S_2; import bettybook.http.shortv.HttpShort.Http.roles.S; import bettybook.http.shortv.message.HttpShortMessageFormatter; import bettybook.http.shortv.message.client.Req; import bettybook.http.shortv.message.server.Resp; public class HttpShortS { public static void main(String[] args) throws IOException { try (ScribServerSocket ss = new SocketChannelServer(8080)) { while (true) { Http http = new Http(); try (MPSTEndpoint<Http, S> server = new MPSTEndpoint<>(http, S, new HttpShortMessageFormatter())) { server.accept(ss, C); run(new Http_S_1(server)); } catch (IOException | ClassNotFoundException | ScribbleRuntimeException e) { e.printStackTrace(); } } } } private static void run(Http_S_1 s1) throws ClassNotFoundException, ScribbleRuntimeException, IOException { Buf<Req> buf = new Buf<>(); Http_S_2 s2 = s1.receive(C, Req, buf); System.out.println("Request:\n" + buf.val); s2.send(C, new Resp("1.1", "<html><body>Hello, World!</body></html>")); } }