Annotation of OpenXM/src/OpenMath/OMproxy.java, Revision 1.1
1.1 ! tam 1: import JP.ac.kobe_u.math.tam.OpenXM.*;
! 2: import java.util.Stack;
! 3: import java.io.*;
! 4:
! 5: class OMproxy implements Runnable{
! 6: private OpenXM ox;
! 7: private Stack stack = new Stack();
! 8:
! 9: public OMproxy(String host,int ControlPort,int DataPort) throws IOException{
! 10: ox = new OpenXM(this,host,ControlPort,DataPort);
! 11: }
! 12:
! 13: public void run(){
! 14: OM2OXM P = new OM2OXM();
! 15:
! 16: try{
! 17: while(true){
! 18: synchronized(ox){
! 19: int ox_tag = ox.receiveOXtag();
! 20:
! 21: switch(ox_tag){
! 22: case OpenXM.OX_COMMAND:
! 23: StackMachine(ox.receiveSM());
! 24: break;
! 25:
! 26: case OpenXM.OX_DATA:
! 27: stack.push(ox.receiveCMO());
! 28: System.out.println("push: "+ stack.peek());
! 29: break;
! 30: }
! 31: }
! 32: }
! 33: }catch(java.io.IOException e){
! 34: System.err.println(e.getMessage());
! 35: e.printStackTrace();
! 36: }
! 37:
! 38: System.out.println("breaking...");
! 39: }
! 40:
! 41: public void stop(){
! 42: System.out.println("OMproxy Stoping...");
! 43: synchronized(ox){
! 44: //this.stop();
! 45: while(!stack.empty()){
! 46: stack.pop();
! 47: }
! 48: System.out.println("OMproxy Stopped");
! 49: }
! 50: }
! 51:
! 52: private void SM_popCMO() throws java.io.IOException{
! 53: if(stack.empty()){
! 54: ox.send(new CMO_NULL());
! 55: }else{
! 56: ox.send(stack.pop());
! 57: }
! 58: }
! 59:
! 60: private void SM_executeFunction() throws java.io.IOException{
! 61: String function_name;
! 62: CMO[] argv;
! 63: int argc;
! 64:
! 65: if(!(stack.peek() instanceof CMO_STRING)){
! 66: stack.push(new CMO_ERROR2());
! 67: return;
! 68: }
! 69: function_name = ((CMO_STRING)stack.pop()).getString();
! 70: argc = ((CMO_INT32)stack.pop()).intValue();
! 71: argv = new CMO[argc];
! 72: for(int i=0;i<argc;i++){
! 73: argv[i] = (CMO)stack.pop();
! 74: }
! 75:
! 76: if(argc != 1){
! 77: stack.push(new CMO_ERROR2());
! 78: return;
! 79: }
! 80:
! 81: if(function_name.equals("OMXML2CMO")){
! 82: stack.push(OMXML2CMO(argv[0]));
! 83: return;
! 84: }else if(function_name.equals("CMO2OMXML")){
! 85: stack.push(CMO2OMXML(argv[0]));
! 86: return;
! 87: }
! 88:
! 89: stack.push(new CMO_ERROR2());
! 90: return;
! 91: }
! 92:
! 93: private void StackMachine(SM mesg) throws java.io.IOException{
! 94: switch(mesg.getCode()){
! 95: case SM.SM_popCMO:
! 96: SM_popCMO();
! 97: break;
! 98:
! 99: case SM.SM_executeFunction:
! 100: SM_executeFunction();
! 101: break;
! 102:
! 103: default:
! 104: System.out.println("received "+ mesg);
! 105: }
! 106: }
! 107:
! 108: private CMO CMO2OMXML(CMO obj){
! 109: String str = OM2OXM.CMO2OM(obj);
! 110:
! 111: return new CMO_STRING(str);
! 112: }
! 113:
! 114: private CMO OMXML2CMO(CMO obj){
! 115: OM2OXM trans = new OM2OXM();
! 116: //StringBufferInputStream stream;
! 117: ByteArrayInputStream stream;
! 118: CMO ret;
! 119:
! 120: if(obj instanceof CMO_STRING){
! 121: return new CMO_ERROR2();
! 122: }
! 123:
! 124: try{
! 125: stream = new ByteArrayInputStream(((CMO_STRING)obj).getString().getBytes());
! 126: ret = trans.parse(stream);
! 127: }catch(IOException e){
! 128: return new CMO_ERROR2(new CMO_STRING(e.toString()));
! 129: }
! 130:
! 131: return ret;
! 132: }
! 133:
! 134: public static void main(String argv[]){
! 135: String host = "localhost";
! 136: int DataPort = 1300, ControlPort = 1200;
! 137:
! 138: for(int i=0;i<argv.length;i++){
! 139: if(argv[i].equals("-h")){
! 140: System.out.println("");
! 141: System.exit(0);
! 142: }else if(argv[i].equals("-host")){
! 143: host = argv[++i];
! 144: }else if(argv[i].equals("-data")){
! 145: DataPort = Integer.valueOf(argv[++i]).intValue();
! 146: }else if(argv[i].equals("-control")){
! 147: ControlPort = Integer.valueOf(argv[++i]).intValue();
! 148: }else{
! 149: System.err.println("unknown option :"+ argv[i]);
! 150: System.exit(1);
! 151: }
! 152: }
! 153: System.out.println("host(ctrl,data): "+ host
! 154: +"("+ ControlPort +","+ DataPort +")");
! 155:
! 156: try{
! 157: new OMproxy(host,ControlPort,DataPort);
! 158: System.out.println("connected.");
! 159: }catch(IOException e){
! 160: System.err.println("Error occured: "+ e);
! 161: System.err.println(e.getLocalizedMessage());
! 162: System.err.println(e.getMessage());
! 163: }
! 164: }
! 165: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>