=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Doc/ox.sm1,v retrieving revision 1.4 retrieving revision 1.17 diff -u -p -r1.4 -r1.17 --- OpenXM/src/kan96xx/Doc/ox.sm1 1999/11/04 12:08:43 1.4 +++ OpenXM/src/kan96xx/Doc/ox.sm1 2001/08/22 03:23:25 1.17 @@ -1,4 +1,4 @@ -%%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.3 1999/11/03 00:45:43 takayama Exp $ +%%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.16 2001/08/22 02:36:34 takayama Exp $ %%%%%%%%%%%% Configuration: Specify your server path %%%%% ox, ox_sm1, oxlog are contained in kxx.tgz %%%%% These should be under /usr/local/lib/sm1 or LOAD_SM1_PATH @@ -7,7 +7,8 @@ /oxpath.oxlog (bin/oxlog) def /oxpath.xterm (/usr/X11R6/bin/xterm -icon -e ) def /oxpath.null ( ) def -/oxpath.null00 ( >& /dev/null ) def %% cf oxNoX +/oxpath.null00 ( >& /dev/null ) def %%cf. oxNoX +/oxpath.null00-pure-sh ( 2>&1 >/dev/null) def %%TODO:It does not work in our case %%%%%%%%%%%%% The following is used only for sm1connectr-ssh. %%%%%%%%%%%%% Configure path for ox and ox_sm1 on your remote machine. /oxpath.oxlog.xterm-ssh (/home/taka/OpenXM/bin/oxlog /usr/X11R6/bin/xterm -icon -e ) def @@ -52,7 +53,7 @@ ox.version [(Version)] system_variable gt (Please get it from http://www.math.kobe-u.ac.jp/KAN) message error } { } ifelse -(ox.sm1, --- open sm1 protocol module 10/1,1999 (C) N.Takayama. oxhelp for help) message-quiet +(ox.sm1, ---OpenXM protocol module 08/22, 2001 (C) N.Takayama. oxhelp for help) message-quiet /ox.ccc load isArray { } @@ -72,7 +73,7 @@ ox.version [(Version)] system_variable gt /SM_popCMO 262 def /SM_executeFunction 269 def -/SM_DUMMY_sendcmo 280 def +/SM_DUMMY_sendcmo 2147418112 1 add def %%% SM_PRIVATE+1 /SM_sync_ball 281 def /SM_pops 265 def @@ -86,6 +87,7 @@ ox.version [(Version)] system_variable gt /SM_control_kill 1024 def /SM_control_reset_connection 1030 def +/SM_control_spawn_server 1027 def /Etag_error 257 def @@ -160,13 +162,13 @@ ox.verbose { oxhelp } { } ifelse /sm1connect2 { [oxpath.oxlog.xterm oxpath.ox ( -ox ) oxpath.oxsm1 oxpath.null - ( &)] cat system + ( &)] cat system-csh % (kterm -iconic -e /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_sm1 &) system % For MSRI, or Eterm, %(xterm -icon -e /u/nobuki/tmp/kxx/ox -ox /u/nobuki/tmp/Ox/ox_sm1 &) system (If you start the server automatically, you may have a trouble to) message (oxreset. In order to avoid this trouble, start the server by hand.) message - (sleep 5) system + (sleep 5) system-csh [(localhost) 1300 1200] oxconnect /ox.ccc set (The server is binded to the variable ox.ccc) message ox.ccc.init @@ -176,13 +178,13 @@ ox.verbose { oxhelp } { } ifelse [oxpath.oxlog.xterm oxpath.ox ( -ox ) oxpath.oxsm1 ( -data 2300 -control 2200 ) oxpath.null - ( &)] cat system -% (kterm -iconic -e /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_sm1 -data 2300 -control 2200 &) system + ( &)] cat system-csh +% (kterm -iconic -e /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_sm1 -data 2300 -control 2200 &) system-csh % For MSRI -%(xterm -icon -e /u/nobuki/tmp/kxx/ox -ox /u/nobuki/tmp/Ox/ox_sm1 -data 2300 -control 2200&) system +%(xterm -icon -e /u/nobuki/tmp/kxx/ox -ox /u/nobuki/tmp/Ox/ox_sm1 -data 2300 -control 2200&) system-csh (If you start the server automatically, you may have a trouble to) message (oxreset. In order to avoid this trouble, start the server by hand.) message - (sleep 5) system + (sleep 5) system-csh [(localhost) 2300 2200] oxconnect /ox.ccc2 set (The server is binded to the variable ox.ccc2) message } def @@ -193,8 +195,8 @@ ox.verbose { oxhelp } { } ifelse [oxpath.oxlog.xterm oxpath.ox ( -ox ) oxpath.oxsm1 ( -portfile ) ox.ccc.portfile oxpath.null - ( &)] cat system - (sleep 5) system + ( &)] cat system-csh + (sleep 5) system-csh [(oxReadPortFile) ox.ccc.portfile] extension /ox.ccc.control set ox.ccc.control message [(localhost) ox.ccc.control 1200] /ox.ccc set @@ -354,7 +356,7 @@ ox.verbose { oxhelp } { } ifelse /oxreset { /arg1 set [(oxReq) arg1 SM_control_reset_connection] extension pop - [(oxGetFromControl) arg1 ] extension pop +%% [(oxGetFromControl) arg1 ] extension pop [(oxGet) arg1] extension message } def @@ -484,7 +486,7 @@ def /exhausted 0 def % clear the busy flag. /busy [1 1 enginesN { pop 0 } for ] def - (date) system + (date) system-csh {{ exhausted 0 eq { 0 1 enginesN 1 sub { @@ -513,7 +515,7 @@ def } { } ifelse } for } loop } timer - (date) system + (date) system-csh (result is in result) message (Number of s-pairs checked is ) messagen result length message } def @@ -585,7 +587,7 @@ ox.verbose { [oxpath.oxlog.xterm oxpath.ox ( -reverse -ox ) oxpath.oxsm1 ( -data ) data ( -control ) control ( -pass ) pass oxpath.null - ( &)] cat system + ( &)] cat system-csh [(oxCreateClient2) peer 0 pass] extension /ox.ccc set %% 0 means connect from only localhost. (The server is binded to the variable ox.ccc) message @@ -617,7 +619,7 @@ ox.verbose { ] cat /comm set (Executing the command : ) messagen comm message message comm system - (sleep 5) system + (sleep 5) system-csh [(oxCreateClient2) peer 1 pass] extension /your-peer set /arg1 your-peer def ] pop @@ -695,6 +697,19 @@ ox.verbose { } { } ifelse } { } ifelse + %% Else first try to find it in OpenXM_HOME + [(getenv) (OpenXM_HOME)] extension /tname set + tname isString + { + tname addSlash /tname set + [tname (lib/sm1/)] cat /tname set + [(stat) [tname fname] cat] extension + 0 get isInteger %% The file was found. + { /fullname [tname fname] cat def + /getPathNameSm1.LLL goto + } { } ifelse + } { } ifelse + %% Else try to find it in /usr/local/lib/sm1 [(stat) [(/usr/local/lib/sm1/) fname] cat] extension 0 get isInteger %% The file was found. @@ -705,8 +720,11 @@ ox.verbose { %% Otherwise error. [(getPathNameSm1: The file ) fname ( could not be found ) - (neigher in LOAD_SM1_PATH=) + (neigher in LOAD\_SM1\_PATH=) [(getenv) (LOAD_SM1_PATH)] extension + ( nor in OpenXM\_HOME/lib/sm1=) + [(getenv) (OpenXM_HOME)] extension + (/lib/sm1) ( nor in /usr/local/lib/sm1) ] cat /getPathNameSm1.errorMessage set getPathNameSm1.errorMessage message @@ -721,8 +739,9 @@ ox.verbose { [(getPathNameSm1) [([fname] getPathNameSm1 fullname) (string fname, fullname) - (This command searches the fname in /usr/local/lib/sm1 and LOAD_SM1_PATH) - (and returns the fullname.) + (This command searches the fname in LOAD_SM1_PATH, ) + (OpenXM_HOME/lib/sm1, and /usr/local/lib/sm1) + (It returns the fullname.) ]] putUsages /getPathNameAsir { @@ -737,13 +756,6 @@ ox.verbose { /getPathNameAsir.LLL goto } { } ifelse - %% Else first try to find it in /usr/local/lib/asir - [(stat) [(/usr/local/lib/asir/) fname] cat] extension - 0 get isInteger %% The file was found. - { /fullname [(/usr/local/lib/asir/) fname] cat def - /getPathNameAsir.LLL goto - } { } ifelse - %% Else try to find it in ASIR_LIBDIR [(getenv) (ASIR_LIBDIR)] extension /tname set tname isString @@ -756,10 +768,19 @@ ox.verbose { } { } ifelse + %% Else try to find it in /usr/local/lib/asir + [(stat) [(/usr/local/lib/asir/) fname] cat] extension + 0 get isInteger %% The file was found. + { /fullname [(/usr/local/lib/asir/) fname] cat def + /getPathNameAsir.LLL goto + } { } ifelse + %% Otherwise error. - [ (getPathNameAsir: The file ) fname + [ (getPathNameAsir: The file ) + fname (ox_asir) eq + {(ox\_asir)} { fname }ifelse ( could not be found ) - (neigher in /usr/local/lib/asir nor in ASIR_LIBDIR. ) + (neigher in /usr/local/lib/asir nor in ASIR\_LIBDIR. ) ] cat /getPathNameAsir.errorMessage set getPathNameAsir.errorMessage message ] pop popVariables getPathNameAsir.errorMessage error @@ -791,13 +812,21 @@ ox.verbose { /arg1 set [/in-launch_nox /pass /peer /data /control /name /machine /your-peer /comm /remoteOpenXMbin /remoteServer /myhost + /argNumber /aaa ] pushVariables [ - /machine arg1 0 get def - /remoteOpenXMbin arg1 1 get def - /remoteServer arg1 2 get def - /name arg1 3 get def - /myhost arg1 4 get def + /aaa arg1 def + /argNumber aaa length def + /machine aaa 0 get def + machine (localhost) eq argNumber 5 lt and { + aaa 1 get ox_launch_localhost /your-peer set + /LLL.end goto + } { + /remoteOpenXMbin aaa 1 get def + /remoteServer aaa 2 get def + /name aaa 3 get def + /myhost aaa 4 get def + } ifelse /pass [(oxGenPass)] extension def /peer [(oxGetPort) myhost] extension def @@ -821,8 +850,9 @@ ox.verbose { ] cat /comm set (Executing the command : ) messagen comm message message comm system - (sleep 5) system + (sleep 5) system-csh [(oxCreateClient2) peer 1 pass] extension /your-peer set + /LLL.end /arg1 your-peer def ] pop popVariables @@ -832,6 +862,8 @@ ox.verbose { [(ox_launch) [( [remote remote-OpenXM-bin remote-ox-server remote-login-name myhostname] ) ( ox_launch client ) + $or $ + $ [(localhost) ox-server-name] ox_launch client$ (Example 1: ) $ [(tau.math.kobe-u.ac.jp) (/home/taka/OpenXM/bin) $ $ (/home/taka/OpenXM/src/ox_math/ox_math) (taka) (dc4.math.kobe-u.ac.jp) $ @@ -847,7 +879,146 @@ ox.verbose { $ ] ox_launch_nox /@@@.oxmath set $ ]] putUsages +/system-csh { + /arg1 set + [/in-system-csh /com /com2] pushVariables + [ + /com arg1 def + [(/bin/csh -c ") com (")] cat + /com2 set + %%com2 message + com2 system + ] pop + popVariables +} def +/ox_launch_localhost { + /arg1 set + [/in-ox_launch_localhost /pass /peer /data /control /oxserver + /my-peer] pushVariables + [ + /oxserver arg1 def + /pass [(oxGenPass)] extension def + /peer [(oxGetPort) (localhost)] extension def + /data peer 1 get toString def + /control peer 3 get toString def + peer message + [oxpath.oxlog.xterm oxpath.ox ( -reverse -ox ) oxserver + ( -data ) data ( -control ) control ( -pass ) pass + oxpath.null + ( &)] cat system-csh + [(oxCreateClient2) peer 0 pass] extension /my-peer set + %% 0 means connect from only localhost. + (The server is binded to the variable ox.ccc) message + /arg1 my-peer def + ] pop + popVariables + arg1 +} def +%% Test code for oxCreateControl_RFC_101 +/sm1StartControl101 { + [/in-sm1connectr /pass /peer /data /control ] pushVariables + [ + /pass [(oxGenPass)] extension def + /peer [(oxGetPort1) (localhost)] extension def + /data peer 1 get toString def + peer message + [(/home/nobuki/OpenXM/src/oxc/oxc) + ( -c ) pass ( -h ) (localhost) ( -p ) data ( -x ) + oxpath.null + ( &)] cat system-csh -initializePathNamesForOx %% This should be + [(oxCreateControl_RFC_101) peer 0 pass] extension /ox.ccc set + %% 0 means connect from only localhost. + (The server is binded to the variable ox.ccc) message + ox.ccc + ] pop + popVariables +} def + +/sm1StartEngine101 { + [/in-sm1StartEngine101 /peer /data /control /engineID] pushVariables + [ + /peer [(oxGetPort1) (localhost)] extension def + /data peer 1 get def + + ox.ccc data oxpushcmo + ox.ccc (/home/nobuki/OpenXM/bin/ox_sm1) oxpushcmo + [(oxPushCMD) ox.ccc SM_control_spawn_server] extension + ox.ccc oxpopcmo /engineID set + [(oxCreateEngine_RFC_101) peer 0 (Empty) engineID] extension + /ox.ddd set + (The engine is binded to the variables ox.ddd) message + ] pop + popVariables + arg1 +} def + +/OxWorkDirCreated false def +/oxWorkDir { + [/in-oxWorkDir /workHome /work] pushVariables + [ + [(getenv) (OpenXM_tmp)] extension tag 0 eq { + /workHome [ + [(getenv) (HOME)] extension + (/OpenXM_tmp) + ] cat def + }{ + /workHome + [(getenv) (OpenXM_tmp)] extension + def + }ifelse + /work [workHome (/) [(getpid)] extension toString] cat def + + OxWorkDirCreated not { + [(stat) workHome] extension 0 get tag 0 eq { + [(Working directory ) workHome ( will be created.)] cat + message + [(mkdir ) workHome] cat system + }{ + } ifelse + + [(stat) work] extension 0 get tag 0 eq { + [(Working directory ) work ( will be created.)] cat + message + [(mkdir ) work] cat system + }{ + } ifelse + /OxWorkDirCreated true def + }{ } ifelse + /arg1 work def + ] pop + popVariables + arg1 +} def +[(oxWorkDir) + [(oxWorkDir returns a name of working directory for OpenXM processes.) + (If the working direcotry does not exist, it creates ~/OpenXM_tmp/[pid].) + (The name can be changed by setting a value to the environmental variable) + (OpenXM_tmp. cf. oxNewFileName) + ] +] putUsages + +/OxFileName 0 def +/oxNewFileName { + [/in-oxNewFileName /name] pushVariables + [ + /name [(work) OxFileName toString] cat def + /OxFileName OxFileName 1 add def + /arg1 name def + ] pop + popVariables + arg1 +} def +[(oxNewFileName) + [(oxNewFileName returns a unique file name for a working file.) + (cf. oxWorkDir) + ] +] putUsages + +[(ostype)] extension 0 get +(windows) eq { +}{ + initializePathNamesForOx %% This should be +} ifelse