package scratch.scratch1;
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.MPSTEndpoint;
import scratch.scratch1.Scratch1.Proto1.Proto1;
import scratch.scratch1.Scratch1.Proto1.channels.S.EndSocket;
import scratch.scratch1.Scratch1.Proto1.channels.S.Proto1_S_1;
import scratch.scratch1.Scratch1.Proto1.channels.S.ioifaces.Branch_S_C_2_Int__C_4a;
import scratch.scratch1.Scratch1.Proto1.channels.S.ioifaces.Handle_S_C_2_Int__C_4a;
import scratch.scratch1.Scratch1.Proto1.channels.S.ioifaces.Receive_S_C_1;
import scratch.scratch1.Scratch1.Proto1.channels.S.ioifaces.Receive_S_C_4b;
import scratch.scratch1.Scratch1.Proto1.channels.S.ioifaces.Select_S_C_3_Int;
import scratch.scratch1.Scratch1.Proto1.channels.S.ioifaces.Succ_In_C_2_Int;
import scratch.scratch1.Scratch1.Proto1.channels.S.ioifaces.Succ_In_C_4a;
import scratch.scratch1.Scratch1.Proto1.ops._2;
import scratch.scratch1.Scratch1.Proto1.ops._4a;
import scratch.scratch1.Scratch1.Proto1.roles.S;
public class MyS
{
public static void main(String[] args) throws IOException, ScribbleRuntimeException
{
try (ScribServerSocket ss = new SocketChannelServer(8888))
{
//Buf<Integer> i1 = new Buf<>();
//Buf<Integer> i2 = new Buf<>();
while (true)
{
Proto1 foo = new Proto1();
//SessionEndpoint<S> se = foo.project(Proto1.S, new ObjectStreamFormatter(), ss);
try (MPSTEndpoint<Proto1, S> se = new MPSTEndpoint<>(foo, Proto1.S, new ObjectStreamFormatter()))
{
se.accept(ss, Proto1.C);
new Proto1_S_1(se).async(Proto1.C, Proto1._1)
//.branch(Proto1.C, new Handler());
.handle(Proto1.C, new Handler2());
//.branch(Proto1.C, new Handler3<>());
}
catch (Exception e)//ScribbleRuntimeException | IOException | ExecutionException | InterruptedException | ClassNotFoundException e)
{
e.printStackTrace();
}
}
}
}
}
/*class Handler implements Proto1_S_2_Handler
{
@Override
public void receive(EndSocket schan, _4 op) throws ScribbleRuntimeException, IOException
{
System.out.println("Done1-4");
schan.end();
}
@Override
public void receive(Proto1_S_3 schan, _2 op, Buf<? super Integer> b) throws ScribbleRuntimeException, IOException
{
System.out.println("Redo: " + b.val);
try
{
schan.send(Proto1.C, Proto1._3, 456).async(Proto1.C, Proto1._1)
.branch(Proto1.C, this);
//.handle(Proto1.C, this); // "this" handler is not generic enough
}
catch (ClassNotFoundException e)
{
throw new IOException(e);
}
}
//@Override // Re-generated State I/O handler won't have the deprecated callback
public void receive(EndSocket schan, _5 op) throws ScribbleRuntimeException, IOException, ClassNotFoundException
{
System.out.println("Done1-5");
}
}
//*/
//class Handler2<Succ extends Succ_In_C_2_Int> implements Handle_S_C_2_Int__C_4<Succ>
class Handler2 implements Handle_S_C_2_Int__C_4a<Succ_In_C_2_Int, Succ_In_C_4a>
{
@Override
//public void receive(Proto1_S_3 schan, _2 op, Buf<? super Integer> b) throws ScribbleRuntimeException, IOException, ClassNotFoundException
//public void receive(Select_S_C_3_Int<Succ> schan, _2 op, Buf<? super Integer> b) throws ScribbleRuntimeException, IOException, ClassNotFoundException
//public void receive(Succ_In_C_2_Int schan, _2 op, Buf<? super Integer> b) throws ScribbleRuntimeException, IOException, ClassNotFoundException
public void receive(Succ_In_C_2_Int schan, _2 op, Buf<Integer> b) throws ScribbleRuntimeException, IOException, ClassNotFoundException
{
System.out.println("Redo: " + b.val);
schan.to(Select_S_C_3_Int.cast).send(Proto1.C, Proto1._3, 356).to(Receive_S_C_1.cast).async(Proto1.C, Proto1._1).to(Branch_S_C_2_Int__C_4a.cast).handle(Proto1.C, this);
}
@Override
public void receive(Succ_In_C_4a schan, _4a op) throws ScribbleRuntimeException, IOException, ClassNotFoundException
{
schan.to(Receive_S_C_4b.cast).receive(Proto1.C, Proto1._4b).to(EndSocket.cast).end();
System.out.println("Done2-4");
}
/*@Override
public void receive(Succ_In_C_5 schan, _5 op) throws ScribbleRuntimeException, IOException, ClassNotFoundException
{
System.out.println("Done2-5");
}*/
}
/*class Handler3<Succ1 extends Succ_In_C_2_Int, Succ2 extends Succ_In_C_4, Succ3 extends Succ_In_C_5> implements Handle_S_C_2_Int__C_4__C_5<Succ1, Succ2, Succ3>
{
@Override
public void receive(Succ1 schan, _2 op, Buf<? super Integer> b) throws ScribbleRuntimeException, IOException, ClassNotFoundException
{
System.out.println("Redo: " + b.val);
((Branch_S_C_2_Int__C_4__C_5<Succ1, Succ2, Succ3>) schan.to(Select_S_C_3_Int.cast).send(Proto1.C, Proto1._3, 356).to(Receive_S_C_1.cast).async(Proto1.C, Proto1._1)).branch(Proto1.C, this);
//schan.to(Select_S_C_3_Int.cast).send(Proto1.C, Proto1._3, 356).to(Receive_S_C_1.cast).async(Proto1.C, Proto1._1).to(Branch_S_C_2_Int__C_4.cast).branch(Proto1.C, this);
//((Branch_S_C_2_Int__C_4<Succ1, Succ2>) schan.to(Select_S_C_3_Int.cast).send(Proto1.C, Proto1._3, 356).to(Receive_S_C_1.cast).async(Proto1.C, Proto1._1)).branch(Proto1.C, this);
//schan.to(Select_S_C_3_Int.cast).send(Proto1.C, Proto1._3, 356).to(Receive_S_C_1.cast).async(Proto1.C, Proto1._1).to(Branch_S_C_2_Int__C_4.cast).branch(Proto1.C, this);
}
@Override
public void receive(Succ2 schan, _4 op) throws ScribbleRuntimeException, IOException
{
schan.to(EndSocket.cast).end();
System.out.println("Done3-4");
}
@Override
public void receive(Succ3 schan, _5 op) throws ScribbleRuntimeException, IOException, ClassNotFoundException
{
System.out.println("Done3-5");
}
}
//*/