[BACK]Return to OpenXMControlServer.java CVS log [TXT][DIR] Up to [local] / OpenXM / src / OpenMath / ORG / openxm / tam

Annotation of OpenXM/src/OpenMath/ORG/openxm/tam/OpenXMControlServer.java, Revision 1.1

1.1     ! tam         1: /**
        !             2:  * $OpenXM$
        !             3:  */
        !             4: package ORG.openxm.tam;
        !             5:
        !             6: import java.io.*;
        !             7: import java.net.*;
        !             8:
        !             9: /**
        !            10:  * OpenXM $B%/%i%$%"%s%H$+$i$N@\B3$r9T$J$&%=%1%C%H$r:n@.$9$kCj>]%/%i%9(B.
        !            11:  * $B?7$?$J(B ox $B%3%^%s%I$N<BAu$K$h$j(B, $BGQ;_$K$J$kM=Dj(B.
        !            12:  */
        !            13: public abstract class OpenXMControlServer{
        !            14:   private OpenXMControlServer server = null;
        !            15:   private OpenXMstream control = null;
        !            16:   private OpenXMstream stream = null;
        !            17:   private Thread computeThread = null;
        !            18:   final protected boolean debug = false;
        !            19:
        !            20:   public OpenXMControlServer(){
        !            21:     this("localhost",1200,1300);
        !            22:   }
        !            23:
        !            24:   public OpenXMControlServer(String host,int CtrlPort,int StreamPort){
        !            25:     server = this;
        !            26:
        !            27:     try{
        !            28:       control = new OpenXMstream(host,CtrlPort,true);
        !            29:       stream = new OpenXMstream(host,StreamPort,true);
        !            30:
        !            31:       this.start();
        !            32:     }catch(IOException e){}
        !            33:   }
        !            34:
        !            35:   final public void start(){ // control process of OpenXM
        !            36:     try{
        !            37:       control.sendByteOrder();
        !            38:
        !            39:       debug("control: wait OX");
        !            40:       computeThread = new Thread(){
        !            41:        final public void run(){
        !            42:          try{
        !            43:            stream.sendByteOrder();
        !            44:          }catch(IOException e){}
        !            45:          server.computeProcess(stream);
        !            46:        }
        !            47:       };
        !            48:
        !            49:       debug("control: compute process starting");
        !            50:       computeThread.start();
        !            51:       while(true){
        !            52:        OXmessage message = control.receive();
        !            53:
        !            54:        switch(message.getTag()){
        !            55:        case OXmessage.OX_COMMAND:
        !            56:          switch(((SM)message.getBody()).getCode()){
        !            57:          case SM.SM_control_kill:
        !            58:            return;
        !            59:
        !            60:          case SM.SM_control_reset_connection:
        !            61:            //resetConnection();
        !            62:            break;
        !            63:          }
        !            64:          break;
        !            65:
        !            66:        default:
        !            67:          break;
        !            68:        }
        !            69:       }
        !            70:     }catch(IOException e){
        !            71:       System.err.println(e.getMessage());
        !            72:     }finally{
        !            73:       debug("computer process interrupting...");
        !            74:       computeThread.stop();
        !            75:       debug("interrupted. OK! I'll shutdown.");
        !            76:       try{stream.close();}catch(IOException e){}
        !            77:       try{control.close();}catch(IOException e){}
        !            78:     }
        !            79:   }
        !            80:
        !            81:   abstract protected void computeProcess(OpenXMstream DataStream);
        !            82:   /*
        !            83:   private void computeProcess(OpenXMstream DataStream){
        !            84:     while(true){
        !            85:       debug("test process executing");
        !            86:       try{
        !            87:        DataStream.receive();
        !            88:       }catch(IOException e){}
        !            89:     }
        !            90:   }
        !            91:   */
        !            92:
        !            93:   /*
        !            94:   final public synchronized void resetConnection(){
        !            95:     debug("control: stopping computer process...");
        !            96:     try{
        !            97:       control.send(new CMO_INT32(0));
        !            98:     }catch(IOException e){
        !            99:     }catch(MathcapViolation e){}
        !           100:     synchronized(stream){
        !           101:       computeThread.stop();
        !           102:     }
        !           103:     debug("control: stopped.");
        !           104:
        !           105:     try{
        !           106:       debug("control: sending SYNC BALL.");
        !           107:       stream.sendOX_SYNC_BALL();
        !           108:
        !           109:       debug("control: waiting to receive SYNC BALL.");
        !           110:       while(true){
        !           111:        OXmessage message = stream.receive();
        !           112:
        !           113:        debug("control: received "+ message);
        !           114:        if(message.getTag() == OXmessage.OX_SYNC_BALL){
        !           115:          break;
        !           116:        }
        !           117:       }
        !           118:       debug("control: received SYNC BALL and restart computer process");
        !           119:       computeThread = new Thread(this);
        !           120:       computeThread.start();
        !           121:     }catch(IOException e){}catch(MathcapViolation e){}
        !           122:   }
        !           123:   */
        !           124:
        !           125:   final private void debug(String str){
        !           126:     if(debug){
        !           127:       System.err.println(str);
        !           128:     }
        !           129:   }
        !           130:
        !           131:   /*
        !           132:   public static void main(String[] argv){
        !           133:     String hostname = "localhost";
        !           134:     int ControlPort = 1200, DataPort = 1300;
        !           135:     OpenXMserver ox;
        !           136:
        !           137:     for(int i=0;i<argv.length;i++){
        !           138:       if(argv[i].equals("-h")){
        !           139:         System.err.println("");
        !           140:         System.exit(0);
        !           141:       }else if(argv[i].equals("-host")){
        !           142:         hostname = argv[++i];
        !           143:       }else if(argv[i].equals("-data")){
        !           144:         DataPort = Integer.valueOf(argv[++i]).intValue();
        !           145:       }else if(argv[i].equals("-control")){
        !           146:         ControlPort = Integer.valueOf(argv[++i]).intValue();
        !           147:       }else{
        !           148:         System.err.println("unknown option :"+ argv[i]);
        !           149:         System.exit(1);
        !           150:       }
        !           151:     }
        !           152:
        !           153:     try{
        !           154:       ox = new OpenXMserver(hostname,ControlPort,DataPort);
        !           155:     }catch(UnknownHostException e){
        !           156:       System.err.println("host unknown.");
        !           157:       System.err.println(e.getMessage());
        !           158:       return;
        !           159:     }catch(IOException e){
        !           160:       System.err.println("connection failed.");
        !           161:       System.err.println("IOException occuer !!");
        !           162:       System.err.println(e.getMessage());
        !           163:       return;
        !           164:     }
        !           165:
        !           166:     ox.start();
        !           167:
        !           168:     System.err.println("breaking...");
        !           169:   }
        !           170:   */
        !           171: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>