package org.scribble.del.local;
import org.scribble.ast.ScribNode;
import org.scribble.ast.local.LWrapServer;
import org.scribble.del.ConnectionActionDel;
import org.scribble.main.ScribbleException;
import org.scribble.model.endpoint.actions.EWrapServer;
import org.scribble.sesstype.name.Role;
import org.scribble.visit.context.EGraphBuilder;
import org.scribble.visit.context.ProjectedChoiceSubjectFixer;
import org.scribble.visit.context.UnguardedChoiceDoProjectionChecker;
import org.scribble.visit.context.env.UnguardedChoiceDoEnv;
public class LWrapServerDel extends ConnectionActionDel implements LSimpleInteractionNodeDel
{
@Override
public LWrapServer leaveEGraphBuilding(ScribNode parent, ScribNode child, EGraphBuilder builder, ScribNode visited) throws ScribbleException
{
LWrapServer la = (LWrapServer) visited;
Role peer = la.src.toName();
builder.util.addEdge(builder.util.getEntry(), new EWrapServer(peer), builder.util.getExit());
return (LWrapServer) super.leaveEGraphBuilding(parent, child, builder, la);
}
@Override
public void enterProjectedChoiceSubjectFixing(ScribNode parent, ScribNode child, ProjectedChoiceSubjectFixer fixer)
{
fixer.setChoiceSubject(((LWrapServer) child).src.toName());
}
@Override
public void enterUnguardedChoiceDoProjectionCheck(ScribNode parent, ScribNode child, UnguardedChoiceDoProjectionChecker checker) throws ScribbleException
{
super.enterUnguardedChoiceDoProjectionCheck(parent, child, checker);
LWrapServer la = (LWrapServer) child;
UnguardedChoiceDoEnv env = checker.popEnv();
env = env.setChoiceSubject(la.src.toName());
checker.pushEnv(env);
}
}