package demo.fase17.travel2;
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.A;
import static demo.fase17.travel2.TravelAgent2.TravelAgent2.TravelAgent2.confirm;
import static demo.fase17.travel2.TravelAgent2.TravelAgent2.TravelAgent2.port;
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.ExplicitEndpoint;
import demo.fase17.travel2.TravelAgent2.TravelAgent2.TravelAgent2;
import demo.fase17.travel2.TravelAgent2.TravelAgent2.channels.S.TravelAgent2_S_1;
import demo.fase17.travel2.TravelAgent2.TravelAgent2.roles.S;
public class Travel2S
{
public void run() throws Exception
{
try (ScribServerSocket ss = new SocketChannelServer(9999);
ScribServerSocket ss2 = new SocketChannelServer(7777))
{
Buf<Object> b = new Buf<>();
while (true)
{
TravelAgent2 sess = new TravelAgent2();
try (ExplicitEndpoint<TravelAgent2, S> se = new ExplicitEndpoint<>(sess, S, new ObjectStreamFormatter()))
{
new TravelAgent2_S_1(se)
.accept(A, ss)
.send(A, port, 7777)
.accept(C, ss2) // FIXME: accept message
.send(C, confirm, 4567);
System.out.println("(S) payment: " + b.val);
}
catch (ScribbleRuntimeException | IOException e)
{
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws Exception
{
new Travel2S().run();
}
}