=================================================================== RCS file: /home/cvs/OpenXM/doc/OpenXM-specs/control.tex,v retrieving revision 1.7 retrieving revision 1.11 diff -u -p -r1.7 -r1.11 --- OpenXM/doc/OpenXM-specs/control.tex 2000/11/17 02:50:04 1.7 +++ OpenXM/doc/OpenXM-specs/control.tex 2016/08/22 09:23:31 1.11 @@ -1,4 +1,4 @@ -%% $OpenXM: OpenXM/doc/OpenXM-specs/control.tex,v 1.6 2000/07/27 09:51:04 ohara Exp $ +%% $OpenXM: OpenXM/doc/OpenXM-specs/control.tex,v 1.10 2016/08/22 09:08:50 takayama Exp $ \section{Session Management} \subsection{Control server} @@ -36,56 +36,16 @@ OpenXM stack machine and it accepts {\tt SM\_control\_ to send signals to a server or to terminate a server. */ -\subsection{New specification for OpenXM control servers} - +\subsection{New OpenXM control servers} /*&jp - -²æ¡¹¤Ï¿·¤·¤¤¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤òÄó°Æ¤¹¤ë¡£¤½¤Î¥µ¥ó¥×¥ë¼ÂÁõ¤È¤·¤Æ oxc ¤¬ -Ä󶡤µ¤ì¤ë¡£¿·¤·¤¤¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤Ï°Ê²¼¤ÎÅÀ¤Ç½¾Íè¤Î¤â¤Î¤È°Û¤Ê¤ë¡£ -\begin{enumerate} -\item ¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤Ï OpenXM ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¤Ç¤¢¤ê¡¢ -CMObject/Primitive ¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£ -\item ·×»»¥µ¡¼¥Ð¤Îµ¯Æ°¤Ï¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¥³¥Þ¥ó¥É¤ò²ð¤·¤Æ¹Ô¤¦¡£ -\item °ì¤Ä¤Î¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤«¤éÊ£¿ô¤Î·×»»¥µ¡¼¥Ð¤òµ¯Æ°¤Ç¤­¤ë¡£ -\end{enumerate} - -oxc ¤ÎƳÆþ¤Ë¤è¤ê¡¢¤¤¤Þ¤Þ¤Ç¤Î¥µ¡¼¥Ð¤Îµ¯Æ°¼ê½ç¤Ï¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤Îµ¯Æ°¤È -·×»»¥µ¡¼¥Ð¤Îµ¯Æ°¤ËʬΥ¤µ¤ì¤ë¡£¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤òµ¯Æ°¤¹¤ë¤Ë¤Ï¼¡¤Î¼ê½ç¤ò -¼è¤ë¡£¤Þ¤º¡¢Å¬Åö¤Ê¥ª¥×¥·¥ç¥ó(¸å½Ò)¤ò¤Ä¤±¤Æ¡¢¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤òµ¯Æ°¤¹¤ë -¤È¡¢¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤Ï¥½¥±¥Ã¥È¤òºîÀ®¤·¡¢connect ¤¹¤ë¡£¥¯¥é¥¤¥¢¥ó¥È¤Ï¡¢ -listen, accept ¤¹¤ë¡£Àܳ¸å¡¢¥Ð¥¤¥È¥ª¡¼¥À¤ò·èÄꤹ¤ë¡£¥Ð¥¤¥È¥ª¡¼¥À¤Î·èÄê -¤Ë¤Ä¤¤¤Æ¤Ï???¤ò¸«¤è¡£¤½¤Î¸å¡¢¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤ÏÂÔµ¡¾õÂ֤ˤϤ¤¤ë¡£¥³¥ó -¥È¥í¡¼¥ë¥µ¡¼¥Ð¤Ï OpenXM ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¤Ç¤¢¤ë¤«¤é¡¢mathcap ¤Î¸ò´¹¤Ê¤É¤Î¼ê -³¤­¤ËÆþ¤Ã¤Æ¤â¤è¤¤¡£ - -·×»»¥µ¡¼¥Ð¤Îµ¯Æ°¤Ï¡¢oxc ¤Î¥í¡¼¥«¥ë´Ø¿ô oxc\_open ¤Ë¤è¤ë¡£oxc\_open ¤Ï¾¯ -¤Ê¤¯¤È¤â 4 ¸Ä¤Î°ú¿ô¤ò»ý¤Ä¡£¤¹¤Ê¤ï¤Á¡¢ -\begin{verbatim} -oxc_open(·×»»¥µ¡¼¥Ð̾, ¥Û¥¹¥È̾, ¥Ý¡¼¥ÈÈÖ¹æ, ¥â¡¼¥É, ...) -\end{verbatim} -¤È¤¤¤¦·Á¼°¤Ç¤¢¤ë¡£¤³¤³¤Ç¡¢¡Ö·×»»¥µ¡¼¥Ð̾¡×¡¢¡Ö¥Û¥¹¥È̾¡×¤Ï CMO\_STRING -·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¡¢¡Ö¥Ý¡¼¥ÈÈÖ¹æ¡×¡¢¡Ö¥â¡¼¥É¡×¤Ï CMO\_INT32·¿ -¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ë¡£¥Û¥¹¥È̾¤È¤¤¤¦¤Î¤ÏOpenXM¥¯¥é¥¤¥¢¥ó¥È¤Î¥Û -¥¹¥È̾¤Î¤³¤È¤Ç¤¢¤ë¡£¥í¡¼¥«¥ë´Ø¿ô¤Î¼Â¹Ô¤Ï SM\_executeFunction ¤Ë¤è¤ë¡£¤¹ -¤Ê¤ï¤Á³Æ°ú¿ô¤ò½ç¤Ë¥¹¥¿¥Ã¥¯¤ËÀѤߡ¢ºÇ¸å¤ËSM\_executeFunction ¤ò¼Â¹Ô¤¹¤ë¡£ -SM\_executeStringByLocalParser ¤ÏÍøÍѤǤ­¤Ê¤¤¤Î¤ÇÃí°Õ¤¹¤ë¡£ - -oxc\_open ¤Ï¡¢·×»»¥µ¡¼¥Ð¤Îµ¯Æ°¤ËÀ®¸ù¤·¤¿¤é (CMO\_INT32, ¥µ¡¼¥ÐID) ¤ò¡¢¼º -ÇÔ¤·¤¿¤é¥¨¥é¡¼¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣÎ㤨¤Ð·×»»¥µ¡¼¥Ð¤¬È¯¸«¤Ç¤­¤Ê -¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¥¨¥é¡¼¥ª¥Ö¥¸¥§¥¯¥È¤òÀѤळ¤È¤Ë¤Ê¤ë¡£¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤Ï -access(2) ¤òÍѤ¤¤Æ PATH ¤«¤é·×»»¥µ¡¼¥Ð¤òõ¤¹¡£¤â¤·¸«¤Ä¤«¤é¤Ê¤±¤ì¤Ð¡¢fork -¤ò¤»¤º¤Ë¡¢¥¨¥é¡¼¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¹¥¿¥Ã¥¯¤ËÀѤࡣ - -¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤Î¼Â¹Ô·Á¼°¤Ï°Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤òµö¤¹¡£ -\begin{verbatim} - --pass - --host - --port -\end{verbatim} +OpenXM RFC 101 Draft ¤ò¸«¤è +\htmladdnormallink{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}. */ +/*&eg +See OpenXM RFC 101 Draft. +\htmladdnormallink{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}{http://www.math.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html}. +*/ - - \subsection{OpenXM reset protocol} /*&jp @@ -225,7 +185,18 @@ Result: \begin{tabular}{|c|c|} \hline {\tt int32 OX\_DATA} & {\tt CMO\_INT32} {\rm result} \\ \hline -\end{tabular} +\end{tabular}\\ +/*&jp + ¤¹¤Ù¤Æ¥¨¥ó¥¸¥ó¤Ï reset protocol ¤ò¼ÂÁõ¤¹¤ë¤³¤È¤¬¿ä¾©¤µ¤ì¤ë¤¬, +¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï, mathcap ¤ÎÂ裴°ú¿ô¤Î option list ¤Ç +{\tt no\_ox\_reset} ¤òÁ÷¿®¤¹¤Ù¤­¤Ç¤¢¤ë (»²¾È: oxpari). +*/ +/*&eg + All engines are encouraged to install the reset protocol, +but when it is not implemented, +{\tt no\_ox\_reset} option should be included in the fourth argument +(option list) of the mathcap (ref: oxpari). +*/ \item \begin{verbatim} @@ -285,7 +256,7 @@ OpenXM ¥µ¡¼¥Ð¤Ï, ²Äǽ¤Ç¤¢¤ë¤«¤®¤ê²ÉÌۤǤ¢¤ë. ¤«¤®¤ê²¿¤âÁ÷¿®¤·¤Ê¤¤. */ /*&eg -OpenXM servers try to be quiet as far as possible. +OpenXM servers try to be as quiet as possible. For example, engine errors of a server are only put on the engine stack and the engine does not send error packets unless the client sends the message {\tt pop\_cmo}. @@ -299,9 +270,9 @@ OpenXM ¤Ï¤³¤Î¸¶Â§¤ò¤ä¤Ö¤ëÎ㳰Ū¤ÊÊýË¡¤ò°ì¤ÄÍÑ°Õ¤·¤Æ¤¤¤ ¤³¤Îµ¡Ç½¤Ï mathcap ¤Ç¶Ø»ß¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¢¤ë. */ /*&eg -OpenXM provides a method to break this principle. +OpenXM provides a method to notify events. Control server may send {\tt OX\_NOTIFY} header and an {\tt OX\_DATA} packet. -This transmission can be prohibited by mathcap. +This transmission may be prohibited by mathcap. */ /*&jp @@ -314,7 +285,7 @@ quit ¥Ü¥¿¥ó¤¬¤ª¤µ¤ì¤ë¤È canvas ¤¬¾ÃÌǤ¹¤ë¤¬, ¥¨¥ó¥¸¥ó¼ {\tt OX\_NOTIFY} ¤òÍѤ¤¤ë. */ /*&eg -Let us explain how to use {\tt OX\_NOTIFY}. +Let us explain how to use {\tt OX\_NOTIFY} by an example. The {\tt ox\_plot} server of {\tt asir} has a quit button. If the quit button is pressed, the canvas dissappears, but the engine does not terminate. @@ -330,9 +301,10 @@ the {\tt OX\_NOTIFY} message should be used. ¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤è¤¦. ¤·¤¿¤¬¤Ã¤Æ¥¨¥ó¥¸¥ó¤Ï¤Ê¤ó¤é¤«¤ÎÊýË¡¤Ç, ¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤Ë {\tt OX\_NOTIFY} ¤ò¤ª¤¯¤ë¤³¤È¤ò°ÍÍꤷ¤Ê¤¤¤È¤¤¤±¤Ê¤¤. -OpenXM ¤Îµ¬³Ê¤Ç¤Ï, -¥Õ¥¡¥¤¥ë {\tt /tmp/.ox\_notify.pid} ¤Ë touch ¤¹¤ë¤³¤È¤Ç¤³¤ì¤Î -°ì¤Ä¤Î¼Â¸½ÊýË¡¤òÍ¿¤¨¤Æ¤¤¤ë. +¤³¤ÎÊýË¡¤Ï, OS ¤Ë¤è¤ê¤¤¤í¤¤¤í¤ÊÊýË¡¤¬²Äǽ¤À¤«, +¤¿¤È¤¨¤Ð, unix ¤Ç¤Ï +¥Õ¥¡¥¤¥ë {\tt /tmp/.ox\_notify.pid} ¤Ë touch ¤¹¤ë¤³¤È¤Ç¤³¤ì¤ò +°ì¤Ä¤Î¼Â¸½¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë. ¤³¤³¤Ç {\tt pid} ¤Ï¥¨¥ó¥¸¥ó¤Î¥×¥í¥»¥¹ÈÖ¹æ¤Ç¤¢¤ë. ¥³¥ó¥È¥í¡¼¥ë¥µ¡¼¥Ð¤Ï¥Õ¥¡¥¤¥ë {\tt /tmp/.ox\_notify.pid} ¤¬ touch ¤µ¤ì¤¿¤³¤È¤ò¸¡½Ð¤·¤¿¤é, ¥¯¥é¥¤¥¢¥ó¥È¤Ë @@ -341,14 +313,18 @@ touch ¤µ¤ì¤¿¤³¤È¤ò¸¡½Ð¤·¤¿¤é, ¥¯¥é¥¤¥¢¥ó¥È¤Ë ¶¦Í­¥á¥â¥ê¤ä¥·¥°¥Ê¥ë¤òÍѤ¤¤Æ¤·¤é¤»¤Æ¤â¤è¤¤. */ /*&eg -Let us note that it is the control process that sends {\tt OX\_NOTIFY}. +Let us note that only the control process is allowed to send {\tt OX\_NOTIFY}. Therefore, the engine must ask the control server to send {\tt OX\_NOTIFY}. -In the OpenXM, if the engine touches the file +Methods to ask the control process from the engine +depends on operating system. +In case of unix, one method is the use of a file; +for instance, +if the engine touches the file {\tt /tmp/.ox\_notify.pid}, then the control server sends the {\tt OX\_NOTIFY} header and the {\tt OX\_DATA} packet of {\tt cmo\_null}. Here, {\tt pid} is the process id of the engine. Engines and control processes may use a shared memory or a signal -instead of the file {\tt /tmp.ox\_notify.pid}. +instead of the file {\tt /tmp/.ox\_notify.pid}. */