version 1.37, 2000/06/13 14:04:19 |
version 1.40, 2000/09/13 06:44:55 |
|
|
/** |
/** |
* $OpenXM: OpenXM/src/OpenMath/OMproxy.java,v 1.36 2000/04/17 03:18:57 tam Exp $ |
* $OpenXM: OpenXM/src/OpenMath/OMproxy.java,v 1.39 2000/07/03 05:57:43 tam Exp $ |
*/ |
*/ |
|
|
import JP.ac.kobe_u.math.tam.OpenXM.*; |
import ORG.openxm.tam.*; |
import java.util.Stack; |
import java.util.Stack; |
import java.io.*; |
import java.io.*; |
|
|
public class OMproxy extends OpenXMserver{ |
public class OMproxy extends OpenXMserver{ |
private OpenXM ox; |
|
private Stack stack = new Stack(); |
private Stack stack = new Stack(); |
protected boolean debug = true; |
protected boolean debug = false; |
final int version = 200006130; |
final int version = 200006130; |
|
|
public OMproxy(String hostname,int ControlPort,int DataPort){ |
public OMproxy(String hostname,int ControlPort,int DataPort){ |
super(hostname,ControlPort,DataPort); |
super(hostname,ControlPort,DataPort); |
} |
} |
|
|
public void computeProcess(OpenXMconnection stream){ |
public void computeProcess(OpenXMstream stream){ |
OM2OXM P = new OM2OXM(); |
OM2OXM P = new OM2OXM(); |
|
|
debug("OMproxy started."); |
debug("OMproxy started."); |
Line 28 public class OMproxy extends OpenXMserver{ |
|
Line 27 public class OMproxy extends OpenXMserver{ |
|
|
|
switch(ox_tag){ |
switch(ox_tag){ |
case OXmessage.OX_COMMAND: |
case OXmessage.OX_COMMAND: |
StackMachine((SM)message.getBody()); |
StackMachine((SM)message.getBody(),stream); |
break; |
break; |
|
|
case OXmessage.OX_DATA: |
case OXmessage.OX_DATA: |
Line 47 public class OMproxy extends OpenXMserver{ |
|
Line 46 public class OMproxy extends OpenXMserver{ |
|
System.err.println(e.getMessage()); |
System.err.println(e.getMessage()); |
e.printStackTrace(); |
e.printStackTrace(); |
System.err.println("error occured, and recovering processes seems to be impossible."); |
System.err.println("error occured, and recovering processes seems to be impossible."); |
|
}catch(Exception e){ |
|
System.err.println(e.getMessage()); |
|
e.printStackTrace(); |
|
System.err.println("error occured, and recovering processes seems to be impossible."); |
}finally{ |
}finally{ |
System.out.println("breaking..."); |
System.out.println("breaking..."); |
} |
} |
Line 65 public class OMproxy extends OpenXMserver{ |
|
Line 68 public class OMproxy extends OpenXMserver{ |
|
} |
} |
*/ |
*/ |
|
|
private void SM_popCMO() throws java.io.IOException{ |
private void SM_popCMO(OpenXMstream stream) throws java.io.IOException{ |
try{ |
try{ |
if(stack.empty()){ |
if(stack.empty()){ |
ox.send(new CMO_NULL()); |
stream.send(new CMO_NULL()); |
}else{ |
}else{ |
debug("sending CMO: "+ stack.peek()); |
debug("sending CMO: "+ stack.peek()); |
ox.send((CMO)stack.pop()); |
stream.send((CMO)stack.pop()); |
debug("test"); |
debug("test"); |
} |
} |
}catch(MathcapViolation e){ |
}catch(MathcapViolation e){ |
try{ |
try{ |
ox.send(new CMO_ERROR2(new CMO_STRING("MathcapViolation: "+ |
stream.send(new CMO_ERROR2(new CMO_STRING("MathcapViolation: "+ |
e.getMessage()))); |
e.getMessage()))); |
}catch(MathcapViolation tmp){} |
}catch(MathcapViolation tmp){} |
} |
} |
Line 115 public class OMproxy extends OpenXMserver{ |
|
Line 118 public class OMproxy extends OpenXMserver{ |
|
return; |
return; |
} |
} |
|
|
private void SM_mathcap() throws java.io.IOException{ |
private void SM_mathcap(OpenXMstream stream) throws java.io.IOException{ |
CMO[] mathcap = new CMO[3]; |
CMO[] mathcap = new CMO[3]; |
|
|
{ |
{ |
Line 164 public class OMproxy extends OpenXMserver{ |
|
Line 167 public class OMproxy extends OpenXMserver{ |
|
debug("push: "+ stack.peek()); |
debug("push: "+ stack.peek()); |
} |
} |
|
|
private void SM_setMathCap() throws java.io.IOException{ |
private void SM_setMathCap(OpenXMstream stream) |
|
throws java.io.IOException{ |
Object mathcap = stack.pop(); |
Object mathcap = stack.pop(); |
|
|
if(mathcap instanceof CMO_MATHCAP){ |
if(mathcap instanceof CMO_MATHCAP){ |
stack.push(new CMO_ERROR2(new CMO_NULL())); |
stack.push(new CMO_ERROR2(new CMO_NULL())); |
} |
} |
ox.setMathCap((CMO_MATHCAP)mathcap); |
stream.setMathCap((CMO_MATHCAP)mathcap); |
} |
} |
|
|
private void StackMachine(SM mesg) throws java.io.IOException{ |
private void StackMachine(SM mesg,OpenXMstream stream) |
|
throws java.io.IOException{ |
debug("receive: "+mesg); |
debug("receive: "+mesg); |
|
|
switch(mesg.getCode()){ |
switch(mesg.getCode()){ |
case SM.SM_popCMO: |
case SM.SM_popCMO: |
SM_popCMO(); |
SM_popCMO(stream); |
break; |
break; |
|
|
case SM.SM_executeFunction: |
case SM.SM_executeFunction: |
Line 186 public class OMproxy extends OpenXMserver{ |
|
Line 191 public class OMproxy extends OpenXMserver{ |
|
break; |
break; |
|
|
case SM.SM_mathcap: |
case SM.SM_mathcap: |
SM_mathcap(); |
SM_mathcap(stream); |
break; |
break; |
|
|
case SM.SM_setMathCap: |
case SM.SM_setMathCap: |
SM_setMathCap(); |
SM_setMathCap(stream); |
break; |
break; |
|
|
default: |
default: |
Line 238 public class OMproxy extends OpenXMserver{ |
|
Line 243 public class OMproxy extends OpenXMserver{ |
|
} |
} |
|
|
private void debug(String str){ |
private void debug(String str){ |
//if(debug){ |
if(debug){ |
System.err.println(str); |
System.err.println(str); |
//} |
} |
} |
} |
|
|
private static String usage(){ |
private static String usage(){ |