=================================================================== RCS file: /home/cvs/OpenXM/doc/issac2000/ox-messages.tex,v retrieving revision 1.1 retrieving revision 1.4 diff -u -p -r1.1 -r1.4 --- OpenXM/doc/issac2000/ox-messages.tex 2000/01/02 07:32:12 1.1 +++ OpenXM/doc/issac2000/ox-messages.tex 2000/01/13 10:57:10 1.4 @@ -1,6 +1,6 @@ -%%$OpenXM$ +%%$OpenXM: OpenXM/doc/issac2000/ox-messages.tex,v 1.3 2000/01/11 05:35:48 noro Exp $ -\section{OX messages} (Ohara) +\section{OX messages} An OX message for TCP/IP is a byte stream consisting of a header and a body. @@ -17,9 +17,9 @@ and the second one is a serial number of the OX messag Negative numbers are expressed by the two's complement. Several byte orders including the network byte order are allowed and the byte order is determined as a part of -the establishment of a connection. +the establishment of a connection. See Section \ref{secsession}. -The OX messages are classifed into three types: +The OX messages are classified into three types: DATA, COMMAND, and others. We have the following main tags for the OX messages. \begin{verbatim} @@ -34,32 +34,44 @@ We have the following main tags for the OX messages. New OX tags may be added. The new tag should be classified into DATA or COMMAND. -For example, \verb+ OX_DATA_ASIR_BINARY + was added a few month ago -to send internal serialized objects of asir via OpenXM protocol. -This is a tag classifed to DATA. -See the home page of OpenXM to add a new tag. +For example, \verb+ OX_DATA_ASIR_LOCAL_BINARY + was added a few month ago +to send internal serialized objects of asir via the OpenXM protocol. +This is a tag classified to DATA. +See the web page of OpenXM to add a new tag. In OpenXM, a distributed computation is done as follows: \begin{enumerate} \item A client requests something to a server. -\item The server does works according to the request. +\item The server does some work according to the request. \item The client requests to send data to the server. \item The server sends the data to the client and the client gets the data. \end{enumerate} -The server is a stack machine. -That is OX data message sent by the client +The server is a stack machine. (see Section~\ref{sec:ox-stackmachines} +for detail) +That is {\it OX data} message sent by the client are pushed to the stack of the server. -If the server gets a OX command message, then the data are -popped form the stack and they are used as arguments of a function call. -For example, the asir command -\verb+ ox_push_cmo(P,1) + +If the server gets an {\it OX command} message, then the server extract +a stack machine code in the OX command message and interpret the code. +For example, in case of SM\_executeFunction, some data are popped from +the stack and they are used as arguments of a function call. + +We explain an implementation of handling OX messages. +For example, the asir command {\tt ox\_push\_cmo(P,1)} +(push integer $1$ to the server $P$) sends an OX data message -(OX\_DATA,(CMO\_ZZ,1)) to the server $P$. +{\tt (OX\_DATA,(CMO\_ZZ,1))} to the server $P$. Here, OX\_DATA stands for OX\_DATA header and -(CMO\_ZZ,1) is a body standing for $1$ expressed in CMO data encoding format. +{\tt (CMO\_ZZ,1)} is a body standing for $1$ expressed +in the CMO data encoding format. +The server tranlates $(CMO\_ZZ, 1)$ to its own internal object fotrmat +for integers and pushs the object to the stack. +An OpenXM client admit that its own command sends some OX messages +sequentially at once. - - - +For example, the asir command +{\tt ox\_execute\_string(P, "Print[x+y]")} sends an OX data message +{\tt (OX\_DATA, (CMO\_STRING, "Print[x+y]"))} and an OX command message +{\tt (OX\_COMMAND, (SM\_executeStringByLocalParser))} to an OpenXM +server. \ No newline at end of file