version 1.31, 2000/03/14 04:44:17 |
version 1.42, 2001/01/30 05:55:13 |
|
|
/** |
/** |
* $OpenXM: OpenXM/src/OpenMath/OMproxy.java,v 1.30 2000/03/12 14:24:21 tam Exp $ |
* $OpenXM: OpenXM/src/OpenMath/OMproxy.java,v 1.41 2000/10/11 08:32:13 ohara 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.*; |
|
|
class OMproxy implements Runnable{ |
public class OMproxy extends OpenXMControlServer{ |
private OpenXM ox; |
|
private Stack stack = new Stack(); |
private Stack stack = new Stack(); |
protected boolean debug = false; |
protected boolean debug = false; |
final int version = 200001190; |
final int version = 200006130; |
|
|
public OMproxy(String host,int ControlPort,int DataPort) throws IOException{ |
public OMproxy(String hostname,int ControlPort,int DataPort){ |
ox = new OpenXM(this,host,ControlPort,DataPort); |
super(hostname,ControlPort,DataPort); |
} |
} |
|
|
public void run(){ |
public void computeProcess(OpenXMstream stream){ |
OM2OXM P = new OM2OXM(); |
OM2OXM P = new OM2OXM(); |
|
|
debug("OMproxy started."); |
debug("OMproxy started."); |
try{ |
try{ |
while(true){ |
while(true){ |
try{ |
try{ |
int ox_tag = ox.receiveOXtag(); |
OXmessage message = stream.receive(); |
|
int ox_tag = message.getTag(); |
|
|
switch(ox_tag){ |
switch(ox_tag){ |
case OpenXM.OX_COMMAND: |
case OXmessage.OX_COMMAND: |
StackMachine(ox.receiveSM()); |
StackMachine((SM)message.getBody(),stream); |
break; |
break; |
|
|
case OpenXM.OX_DATA: |
case OXmessage.OX_DATA: |
stack.push(ox.receiveCMO()); |
stack.push(message.getBody()); |
debug("push: "+ stack.peek()); |
debug("push: "+ stack.peek()); |
break; |
break; |
} |
} |
Line 39 class OMproxy implements Runnable{ |
|
Line 39 class OMproxy implements Runnable{ |
|
System.err.println(e.getMessage()); |
System.err.println(e.getMessage()); |
e.printStackTrace(); |
e.printStackTrace(); |
debug("error occured. stack was cleared."); |
debug("error occured. stack was cleared."); |
|
stack = new Stack(); |
} |
} |
} |
} |
}catch(IOException e){ |
}catch(IOException e){ |
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.err.println("breaking..."); |
} |
} |
} |
} |
|
|
/* |
/* |
public void stop(){ |
public void stop(){ |
System.out.println("OMproxy Stoping..."); |
System.err.println("OMproxy Stoping..."); |
synchronized(ox){ |
synchronized(ox){ |
//this.stop(); |
//this.stop(); |
while(!stack.empty()){ |
while(!stack.empty()){ |
stack.pop(); |
stack.pop(); |
} |
} |
System.out.println("OMproxy Stopped"); |
System.err.println("OMproxy Stopped"); |
} |
} |
} |
} |
*/ |
*/ |
|
|
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(stack.pop()); |
stream.send((CMO)stack.pop()); |
|
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 112 class OMproxy implements Runnable{ |
|
Line 118 class OMproxy implements Runnable{ |
|
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 136 class OMproxy implements Runnable{ |
|
Line 142 class OMproxy implements Runnable{ |
|
{ |
{ |
CMO[] CMOFormat = {new CMO_INT32(CMO.NULL), |
CMO[] CMOFormat = {new CMO_INT32(CMO.NULL), |
new CMO_INT32(CMO.INT32), |
new CMO_INT32(CMO.INT32), |
new CMO_INT32(CMO.CMO_STRING), |
new CMO_INT32(CMO.STRING), |
new CMO_INT32(CMO.CMO_LIST), |
new CMO_INT32(CMO.LIST), |
new CMO_INT32(CMO.CMO_MONOMIAL32), |
new CMO_INT32(CMO.MONOMIAL32), |
new CMO_INT32(CMO.CMO_ZZ), |
new CMO_INT32(CMO.ZZ), |
new CMO_INT32(CMO.CMO_QQ), |
new CMO_INT32(CMO.QQ), |
new CMO_INT32(CMO.CMO_ZERO), |
new CMO_INT32(CMO.ZERO), |
new CMO_INT32(CMO.CMO_DMS_GENERIC), |
new CMO_INT32(CMO.DMS_GENERIC), |
new CMO_INT32(CMO.CMO_RECURSIVE_POLYNOMIAL), |
new CMO_INT32(CMO.RECURSIVE_POLYNOMIAL), |
new CMO_INT32(CMO.CMO_DISTRIBUTED_POLYNOMIAL), |
new CMO_INT32(CMO.DISTRIBUTED_POLYNOMIAL), |
new CMO_INT32(CMO.POLYNOMIAL_IN_ONE_VARIABLE), |
new CMO_INT32(CMO.POLYNOMIAL_IN_ONE_VARIABLE), |
new CMO_INT32(CMO.CMO_BIGFLOAT), |
new CMO_INT32(CMO.BIGFLOAT), |
new CMO_INT32(CMO.CMO_INDETERMINATE), |
new CMO_INT32(CMO.INDETERMINATE), |
new CMO_INT32(CMO.CMO_TREE)}; |
new CMO_INT32(CMO.TREE)}; |
CMO[] DataFormat1 = {new CMO_INT32(OpenXM.OX_DATA), |
CMO[] DataFormat1 = {new CMO_INT32(OXmessage.OX_DATA), |
new CMO_LIST(CMOFormat)}; |
new CMO_LIST(CMOFormat)}; |
CMO[] list = {new CMO_LIST(DataFormat1)}; |
CMO[] list = {new CMO_LIST(DataFormat1)}; |
|
|
mathcap[2] = new CMO_LIST(list); |
mathcap[2] = new CMO_LIST(list); |
} |
} |
|
|
|
stack = new Stack(); |
stack.push(new CMO_MATHCAP(new CMO_LIST(mathcap))); |
stack.push(new CMO_MATHCAP(new CMO_LIST(mathcap))); |
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 182 class OMproxy implements Runnable{ |
|
Line 191 class OMproxy implements Runnable{ |
|
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: |
System.out.println("received "+ mesg); |
System.err.println("received "+ mesg); |
} |
} |
} |
} |
|
|
Line 235 class OMproxy implements Runnable{ |
|
Line 244 class OMproxy implements Runnable{ |
|
|
|
private void debug(String str){ |
private void debug(String str){ |
if(debug){ |
if(debug){ |
System.out.println(str); |
System.err.println(str); |
} |
} |
} |
} |
|
|
Line 254 class OMproxy implements Runnable{ |
|
Line 263 class OMproxy implements Runnable{ |
|
return ret; |
return ret; |
} |
} |
|
|
public static void main(String argv[]){ |
public static void main(String[] argv){ |
String host = "localhost"; |
String hostname = "localhost"; |
int DataPort = 1300, ControlPort = 1200; |
int ControlPort = 1200, DataPort = 1300; |
boolean debug = false; |
OpenXMControlServer ox; |
|
|
for(int i=0;i<argv.length;i++){ |
for(int i=0;i<argv.length;i++){ |
if(argv[i].equals("-h")){ |
if(argv[i].equals("-h")){ |
System.out.print(usage()); |
System.err.println(""); |
System.exit(0); |
System.exit(0); |
}else if(argv[i].equals("-host")){ |
}else if(argv[i].equals("-host")){ |
host = argv[++i]; |
hostname = argv[++i]; |
}else if(argv[i].equals("-data")){ |
}else if(argv[i].equals("-data")){ |
DataPort = Integer.valueOf(argv[++i]).intValue(); |
DataPort = Integer.valueOf(argv[++i]).intValue(); |
}else if(argv[i].equals("-control")){ |
}else if(argv[i].equals("-control")){ |
ControlPort = Integer.valueOf(argv[++i]).intValue(); |
ControlPort = Integer.valueOf(argv[++i]).intValue(); |
}else if(argv[i].equals("-insecure")){ |
|
}else if(argv[i].equals("-debug")){ |
|
debug = true; |
|
}else{ |
}else{ |
System.err.println("unknown option : "+ argv[i]); |
System.err.println("unknown option :"+ argv[i]); |
System.err.print(usage()); |
System.exit(1); |
System.exit(1); |
|
} |
} |
} |
} |
|
|
System.out.println("host(ctrl,data): "+ host |
//ox = new OpenXMserver(hostname,ControlPort,DataPort); |
+"("+ ControlPort +","+ DataPort +")"); |
ox = new OMproxy(hostname,ControlPort,DataPort); |
|
/* |
try{ |
try{ |
new OMproxy(host,ControlPort,DataPort).debug = debug; |
}catch(java.net.UnknownHostException e){ |
System.out.println("connected."); |
System.err.println("host unknown."); |
|
System.err.println(e.getMessage()); |
|
return; |
}catch(IOException e){ |
}catch(IOException e){ |
System.err.println("Error occured: "+ e); |
System.err.println("connection failed."); |
System.err.println(e.getLocalizedMessage()); |
System.err.println("IOException occuer !!"); |
System.err.println(e.getMessage()); |
System.err.println(e.getMessage()); |
|
return; |
} |
} |
|
*/ |
|
|
|
ox.start(); |
|
|
|
System.err.println("breaking..."); |
} |
} |
} |
} |