=================================================================== RCS file: /home/cvs/OpenXM/src/OpenMath/ORG/openxm/tam/OpenXM.java,v retrieving revision 1.7 retrieving revision 1.11 diff -u -p -r1.7 -r1.11 --- OpenXM/src/OpenMath/ORG/openxm/tam/OpenXM.java 2001/11/01 08:54:50 1.7 +++ OpenXM/src/OpenMath/ORG/openxm/tam/OpenXM.java 2021/03/29 02:35:12 1.11 @@ -1,5 +1,5 @@ /** - * $OpenXM: OpenXM/src/OpenMath/ORG/openxm/tam/OpenXM.java,v 1.6 2001/01/28 19:17:24 tam Exp $ + * $OpenXM: OpenXM/src/OpenMath/ORG/openxm/tam/OpenXM.java,v 1.10 2002/10/27 10:39:32 takayama Exp $ */ package ORG.openxm.tam; @@ -8,13 +8,13 @@ import java.net.*; /*&ja - OpenXM サーバとの接続を行なうクラス. - クライアント側が使用する. - 接続するサーバ毎に一つの OpenXM クラスが必要. + OpenXM 泣若・膓茵. + ゃ≪潟眼篏睡. + ・膓泣若罸筝ゃ OpenXM 鴻綽荀. */ /** - * OpenXM is a class to connect to OpenXM RFC100 compliant - * servers. + * OpenXM is a class to connect to OpenXM servers, + * which are compliant to OpenXM RFC 100. * There is one-to-one correspondence between the instances * of the class OpenXM and the OpenXM servers. */ @@ -23,20 +23,20 @@ public class OpenXM{ final protected boolean debug = false; /*&ja - * OpenXM サーバとの接続を TCP/IP ソケットを用いて行なう. - * マシン名 host のポート番号 CtrlPort にコントロールを, - * ポート番号 StreamPort にデータ用の接続を行なう. + * OpenXM 泣若・膓 TCP/IP 純宴茵. + * 激喝 host 若 CtrlPort 潟潟若, + * 若 StreamPort 若睡・膓茵. */ /** * Connect to an OpenXM server via TCP/IP socket. - * host : machine name of the OpenXM server. - * CtrlPort : control port number of the OpenXM server. - * StreamPort : data port number of the OpenXM server. + * @param host a machine name of the OpenXM server. + * @param CtrlPort the control port number of the OpenXM server. + * @param StreamPort the data port number of the OpenXM server. * As to details on the notion of control port and data port, see * Design and Implementation of OpenXM client server model and * common mathematical object format (OpenXM-RFC 100, * proposed standard) - * at http://www.openxm.org + * @see OpenXM */ public OpenXM(String host,int CtrlPort,int StreamPort) throws IOException{ control = new OpenXMstream(host,CtrlPort); @@ -53,11 +53,19 @@ public class OpenXM{ stream.sendByteOrder(); } + /*&ja + * 潟潟 command 腴> + * OpenXM 泣若・膓 TCP/IP 純宴茵. + * 激喝 host 若 CtrlPort 潟潟若, + * 若 StreamPort 若睡・膓茵. + */ /** - * コマンド command を立ち上げ、 - * OpenXM サーバとの接続を TCP/IP ソケットを用いて行なう. - * マシン名 host のポート番号 CtrlPort にコントロールを, - * ポート番号 StreamPort にデータ用の接続を行なう. + * First, execute a command, which is usually an OpenXM server, + * and next try to connect to the OpenXM server via TCP/IP. + * @param command a command. + * @param host a machine name of the OpenXM server. + * @param CtrlPort the control port number of the OpenXM server. + * @param StreamPort the data port number of the OpenXM server. */ public OpenXM(String command,String host,int CtrlPort,int StreamPort) throws IOException{ @@ -76,37 +84,103 @@ public class OpenXM{ stream.sendByteOrder(); } + public OpenXM(String host,int CtrlPort,int StreamPort,String ox_server,int oxd_port,String pass) + throws IOException{ + // pass may be a null string. + control = new OpenXMstream(host,CtrlPort,pass); + stream = new OpenXMstream(host,StreamPort,pass); + System.err.println("Listening..."); + System.err.println("Launch ox server with the reverse option, e.g., ox -ox ox_asir -reverse"); + // Launch ox_server by the oxd daemon (oxd_port). + // BUG: It has not yet been implemented. + control.OpenXMstreamAccept(); + System.err.println("Accepted the control port."); + stream.OpenXMstreamAccept(); + System.err.println("Accepted the data port."); + + + control.sendByteOrder(); + stream.sendByteOrder(); + } + +public OpenXM(String ox_server) throws IOException { + int oxdPort = 8089; + String host = "localhost"; + oxdStream oxd = new oxdStream(oxdPort); + int cport,dport; + cport = oxd.startPhase1(); + dport = cport+1; + try { + control = new OpenXMstream(host,cport,""); + stream = new OpenXMstream(host,dport,""); + }catch( IOException e) { + System.err.println("Could not open ports for client."); + oxd.write(""); + } + + System.err.println("Listenning..."); + + oxd.startPhase2(ox_server,cport); + + control.OpenXMstreamAccept(); + System.err.println("Accepted the control port."); + stream.OpenXMstreamAccept(); + System.err.println("Accepted the data port."); + + + control.sendByteOrder(); + stream.sendByteOrder(); +} + + + /*&ja + * 泣若荐膊筝茵. 憜絎茖. + */ /** - * 接続の初期化を行なう. 現在は未実装. + * Resetting the engine process. It has not yet been implemented. */ public synchronized void resetConnection(){ debug("control: stopping computer process..."); debug("control: sending SYNC BALL."); } + /*&ja + * OpenXM <祉若吾若帥鴻若篆<. + * <純<祉若吾cс. + * т. + */ /** - * OpenXM メッセージをデータストリームに送信する. - * このメソッドはメッセージのボディの部分だけでよい. - * ヘッダ部分は自動で付加される. + * Send an OpenXM message object. + * @param object a message. For example, oxm.send(new CMO_STRING("Hello")) + * sends a string "Hello" to the OpenXM server oxm in the CMO_STRING data + * encoding. */ public void send(OXbody object) throws IOException,MathcapViolation{ stream.send(object); } + /*&ja + * 若帥鴻若 OpenXM <祉若吾. + */ /** - * データストリームから OpenXM メッセージを受け取る. + * Receive an OpenXM message. */ public OXmessage receive() throws IOException{ return stream.receive(); } + /*&ja + * 若帥鴻若 MathCap mathcap 荐絎. + * 篁ュ, 篆<吾с mathcap c + * сャ. 絎сャ + * OXbody 鴻羇丞鴻絎茖. + * mathcap 吾с, + * 篁ュ MathcapViolation 榊緇. + */ /** - * データストリームの MathCap を mathcap に設定する. - * 以後, 送信するオブジェクトは mathcap に合っているかどうか - * チェックが入る. 実際にチェックが入るかどうかは - * OXbody クラスの派生クラスの実装による. - * mathcap に反したオブジェクトを送ろうとした時には, - * 以後 MathcapViolation が発生することが期待される. + * Set the mathcap. + * If one tries to send an object which is prohibited to send by the mathcap, + * the mathcapViolation exception is thrown. */ public void setMathCap(CMO_MATHCAP mathcap){ stream.setMathCap(mathcap); @@ -158,7 +232,7 @@ public class OpenXM{ } try{ - //サーバ側へ文字列を送信します。 + //泣若眼御絖篆<障 ox.send(new SM(SM.SM_mathcap)); ox.send(new SM(SM.SM_popString)); @@ -192,7 +266,7 @@ public class OpenXM{ //os.flush(); - //サーバ側から送信された文字列を受信します。 + //泣若眼篆<絖篆<障 while(true){ ox.receive(); }