version 1.3, 2001/04/21 08:18:03 |
version 1.5, 2001/04/21 13:54:29 |
|
|
%% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.2 2001/04/21 06:38:37 takayama Exp $ |
%% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.4 2001/04/21 11:16:30 takayama Exp $ |
%% http server by sm1 |
%% http server by sm1 |
|
|
/httpd.port 1200 def |
/httpd.port 1200 def |
|
/httpd.initialization |
|
%% Put initialization codes here. |
|
[ |
|
("Asirweb version 0.80. "+ |
|
" Risa/Asir oxasir version "+rtostr(version());) |
|
] cat |
|
def |
[(parse) (oxasir.sm1) pushfile] extension |
[(parse) (oxasir.sm1) pushfile] extension |
(oxasir.started) boundp { |
(oxasir.started) boundp { |
} { |
} { |
[(x^2-1) (x)] fctr pop |
[(x^2-1) (x)] fctr pop |
|
oxasir.ccc oxmathcap |
|
oxasir.ccc oxsetmathcap |
} ifelse |
} ifelse |
|
|
|
/asirweb { |
|
(sleep 3; netscape -geometry 800x500 http://localhost:1200 &) system |
|
httpd ; |
|
} def |
|
|
/httpd_startserver { |
/httpd_startserver { |
[(sm1.socket) (open) [httpd.port (localhost)]] extension |
[(sm1.socket) (open) [httpd.port (localhost)]] extension |
/server.fdAndPort set |
/httpd.server.fdAndPort set |
(sm1.socket.open returns ) messagen server.fdAndPort message |
(sm1.socket.open returns ) messagen httpd.server.fdAndPort message |
[(sm1.socket) (accept) [server.fdAndPort 0 get]] extension |
[(sm1.socket) (accept) [httpd.server.fdAndPort 0 get]] extension |
/server.fd set |
/httpd.server.fd set |
(connected.) message |
(connected.) message |
(sm1.socket.accept returns ) messagen server.fd message |
(sm1.socket.accept returns ) messagen httpd.server.fd message |
} def |
} def |
|
|
/httpd_stopserver { |
/httpd_stopserver { |
[(sm1.socket) (close) server.fd ] extension message |
[(sm1.socket) (close) httpd.server.fd ] extension message |
} def |
} def |
|
|
/send_packet { |
/send_packet { |
/arg1 set |
/arg1 set |
[(sm1.socket) (write) [server.fd 0 get arg1]] extension message |
[(sm1.socket) (write) [httpd.server.fd 0 get arg1]] extension message |
} def |
} def |
|
|
/sendln { |
/sendln { |
|
|
}{ |
}{ |
10 (string) dc /mmm set |
10 (string) dc /mmm set |
} ifelse |
} ifelse |
[(sm1.socket) (write) [server.fd 0 get mmm]] extension message |
[(sm1.socket) (write) [httpd.server.fd 0 get mmm]] extension message |
] pop |
] pop |
popVariables |
popVariables |
} def |
} def |
|
|
/httpd { |
/httpd { |
/httpd.serial 1 def |
/httpd.serial 0 def |
/httpd.history [ ] def |
/httpd.history [ ] def |
{ |
{ |
httpd_startserver ; |
httpd_startserver ; |
|
|
} def |
} def |
|
|
/httpd_action { |
/httpd_action { |
[/in-httpd /httpd.com.old /ff /httpd.com /httpd.result |
[/in-httpd /ff /httpd.com /httpd.result /sss |
|
/sss.engine /sss.web |
] pushVariables |
] pushVariables |
[ |
[ |
(httpd:sm1 is ready) message |
|
{ |
{ |
/httpd.com.old ( ) def |
[(sm1.socket) (select) [httpd.server.fd 0 get -1]] extension |
[(sm1.socket) (select) [server.fd 0 get -1]] extension |
%% wait for ever |
%% wait for ever |
[(sm1.socket) (read) [httpd.server.fd 0 get ]] extension /ff set |
{ |
|
[(sm1.socket) (read) [server.fd 0 get ]] extension /ff set |
|
ff length 0 eq { |
ff length 0 eq { |
(connection is closed.) message |
(connection is closed.) message |
} |
} |
ff (quit) eq |
{ |
{ (We exit the function httpd) message exit } |
|
{ %% [(SigIgn) 0] system_variable |
|
(------------ start ----------------------) message |
(------------ start ----------------------) message |
ff message |
ff message |
(-----------------------------------------) message |
(-----------------------------------------) message |
|
|
httpd.com message |
httpd.com message |
(------------ end ----------------------) message |
(------------ end ----------------------) message |
( ) message |
( ) message |
|
httpd.serial 0 eq { |
|
/httpd.com httpd.initialization def |
|
} { } ifelse |
httpd.com metaCommand { |
httpd.com metaCommand { |
/httpd.history httpd.history httpd.com append def |
/httpd.history |
|
httpd.history |
|
[10 (string) dc |
|
(/**** ) httpd.serial toString ( ****/) |
|
10 (string) dc |
|
httpd.com |
|
] cat |
|
append |
|
def |
oxasir.ccc |
oxasir.ccc |
[(if (1) {) httpd.com (};)] cat |
[(if (1) {) httpd.com (};)] cat |
oxexecutestring ; |
oxexecutestring ; |
oxasir.ccc oxpopstring /httpd.result set |
|
/httpd.com.old httpd.com def |
[(oxReq) oxasir.ccc SM_popString ] extension pop |
|
[(flush)] extension pop |
|
%% Select inputs for interruption. |
|
%% Wait by the spin lock. |
|
{ |
|
[(oxMultiSelect) [oxasir.ccc] 1] extension 1 get 0 get |
|
/sss.engine set |
|
[(sm1.socket) (mselect) |
|
[[httpd.server.fd 0 get] 1] |
|
] extension 0 get /sss.web set |
|
/sss [sss.engine sss.web] def |
|
sss.engine { exit } { } ifelse |
|
sss.web { exit } { } ifelse |
|
} loop |
|
sss message |
|
|
|
sss 0 get { |
|
[(oxGet) oxasir.ccc] extension /httpd.result set |
|
%% oxasir.ccc oxpopstring /httpd.result set |
|
} { |
|
oxasir.ccc oxreset |
|
oxasir.ccc ("computation is interrupted.";) oxexecutestring ; |
|
oxasir.ccc oxpopstring |
|
/httpd.result set |
|
exit |
|
} ifelse |
(------------- result -------------) message |
(------------- result -------------) message |
httpd.result message |
httpd.result message |
(----------------------------------) message |
(----------------------------------) message |
( ) message |
( ) message |
[(<title> asirweb </title> ) |
[httpd.serial 0 eq { } { |
(<font color="blue"> Input-) httpd.serial toString |
(<title> asirweb </title> ) |
(: </font> ) |
(<font color="blue"> Input-) httpd.serial toString |
(<pre> ) httpd.com (</pre>) (<br>) |
(: </font> ) |
|
(<pre> ) httpd.com (</pre>) (<br>) |
|
} ifelse |
(<font color="green"> Output-) httpd.serial toString |
(<font color="green"> Output-) httpd.serial toString |
(: </font> ) |
(: </font> ) |
(<pre>) httpd.result (</pre>) |
(<pre>) httpd.result (</pre>) |
] cat |
] cat |
send-page-3 exit |
send-page-3 exit |
} { } ifelse |
} { exit } ifelse %% metaCommand |
} ifelse |
} ifelse |
} |
|
{ } ifelse |
|
} loop |
} loop |
] pop |
] pop |
popVariables |
popVariables |
|
|
/httpd.asirman.index |
/httpd.asirman.index |
("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_262.html#SEC262") |
("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_262.html#SEC262") |
def |
def |
|
/httpd.asir.intro |
|
("http://www.math.sci.kobe-u.ac.jp/~taka/asir-book-html/main") |
|
def |
/send-menu-1 { |
/send-menu-1 { |
|
|
|
(FILE:) sendln |
[$<a href="http://localhost:$ httpd.port toString |
[$<a href="http://localhost:$ httpd.port toString |
$/?msg=httpdAsirMeta+quit"> QUIT </a>, $ |
$/?msg=httpdAsirMeta+quit"> Shutdown the asir server. </a>, $ |
] cat sendln |
] cat sendln |
|
%% [$<a href="http://localhost:$ httpd.port toString |
|
%% $/?msg=httpdAsirMeta+interrupt"> interrupt </a>, $ |
|
%% ] cat sendln |
|
[$<a href="http://localhost:$ httpd.port toString |
|
$/?msg=httpdAsirMeta+save"> save. </a>, $ |
|
] cat sendln |
|
( <spacer type=horizontal size=80> ) sendln |
|
|
|
(HELP:) sendln |
[(<font color="red"> |
[(<font color="red"> |
<a href=) httpd.asirman (> AsirManual (Ja) </a> </font>, )] cat sendln |
<a href=) httpd.asirman ( > AsirManual (Ja) </a> </font>, )] cat sendln |
[(<font color="purple"> |
[(<font color="purple"> |
<a href=) httpd.asirman.index (> Index (Ja) </a> </font>, )] cat sendln |
<a href=) httpd.asirman.index ( > Index (Ja) </a> </font>, )] cat sendln |
(<font color="blue"> |
[(<font color="blue"> |
<a href="http://www.math.sci.kobe-u.ac.jp/~taka/asir-book-html/main"> Intro (Ja) </a> </font>, ) sendln |
<a href=) httpd.asir.intro ( > Intro (Ja) </a> </font>, )] cat sendln |
} def |
} def |
|
|
|
/send-page-save { |
|
[/in-send-page-save /i] pushVariables |
|
[ |
|
(HTTP/0.9 200 OK) sendln |
|
(Connection: close) sendln |
|
(Content-Type: text/html) sendln |
|
0 sendln |
|
(<html> <body>) sendln |
|
(/* Save the following to sm1out.txt */<br>) sendln |
|
|
|
(<pre>) sendln |
|
0 1 httpd.history length 1 sub { |
|
/i set |
|
httpd.history i get sendln |
|
} for |
|
(</pre>) sendln |
|
(</body> </html>) sendln |
|
0 sendln |
|
[(flush)] extension |
|
[(PrintDollar) 1] system_variable |
|
httpd.history output |
|
[(PrintDollar) 0] system_variable |
|
] pop |
|
popVariables |
|
} def |
|
|
|
|
/stopclient { |
/stopclient { |
[(sm1.socket) (close) [client.fdAndPort 0 get] ] extension message |
[(sm1.socket) (close) [client.fdAndPort 0 get] ] extension message |
} def |
} def |
|
|
msg (httpdAsirMeta quit) eq { |
msg (httpdAsirMeta quit) eq { |
send-page-bye |
send-page-bye |
quit |
quit |
|
/result 0 def |
|
} { } ifelse |
|
msg (httpdAsirMeta save) eq { |
|
send-page-save |
|
/result 0 def |
|
} { } ifelse |
|
msg (httpdAsirMeta interrupt) eq { |
|
oxasir.ccc oxreset |
|
(Interrupted! <br>) send-page-3 |
/result 0 def |
/result 0 def |
} { } ifelse |
} { } ifelse |
/arg1 result def |
/arg1 result def |