[BACK]Return to project.tex CVS log [TXT][DIR] Up to [local] / OpenXM / doc / OpenXM-specs

Annotation of OpenXM/doc/OpenXM-specs/project.tex, Revision 1.3

1.3     ! noro        1: %% $OpenXM: OpenXM/doc/OpenXM-specs/project.tex,v 1.2 2000/01/24 07:36:35 noro Exp $
1.1       noro        2: //&jp \section{現在検討中の機能}
1.2       noro        3: //&eg \section{Projects in work in progress}
                      4:
                      5: //&jp \subsection{ OX DATA with Length の構造 }
                      6: //&eg \subsection{ OX DATA with Length }
1.1       noro        7:
                      8: /*&jp
                      9: Digital signature 付の {\tt OX\_DATA} は
                     10: ヘッダ {\tt OX\_DATA\_WITH\_LENGTH }で, はじまり, CMO がきて,
                     11: それから, 終りのマークおよびデジタル署名がくる.
                     12: この形のデータを {\it secured OX DATA} と呼ぶ.
1.2       noro       13: */
                     14: /*&eg
                     15: {\tt OX\_DATA\_WITH\_LENGTH } is the OX tag for
                     16: OX data message with a digital signature.
                     17: It is followed by the serial number, CMO, an end mark and a digital signature.
                     18: This type of OX data message is called {\it secured OX DATA}.
                     19: */
                     20:
1.1       noro       21: \begin{verbatim}
                     22: #define OX_SECURED_DATA               521
                     23: \end{verbatim}
                     24:
                     25: \noindent
                     26: \begin{tabular}{|c|c|c|c|c|}  \hline
                     27: {\tt int32 OX\_DATA\_WITH\_LENGTH} & {\tt int32} {\rm serial}
                     28: & {\tt int32} {\rm size}
                     29: & {\sl CMObject} {\rm o} & {\it tail} \\
                     30: \hline
                     31: \end{tabular}
                     32:
1.2       noro       33: //&jp {\tt size} フィールドに 値 -1 が入っている場合この情報を無視する.
                     34: //&eg If {\tt size} is equal to -1, then it is ignored.
1.1       noro       35:
1.2       noro       36: //&jp {\it tail } は次のように定義する.
                     37: //&eg {\it tail } is defined as follows.
1.1       noro       38: \\ \noindent
                     39: \begin{tabular}{|c|c|c|}  \hline
                     40: {\tt int32 CMO\_START\_SIGNATURE} & {\tt int32} {\rm size}
                     41: & {\it signature} \\
                     42: \hline
                     43: \end{tabular}
                     44:
1.2       noro       45: /*&jp
1.1       noro       46: ここで, {\tt size} はバイト列 {\it signature} 部の長さ.
                     47: {\it signature} は, Hash 関数を用いた, {\it CMO data}
                     48: にたいする, デジタル署名をいれ, 不正な serialized object
                     49: を検出する.
                     50: Tail の {\tt size} フィールドが 0 の場合, デジタル署名部はない.
1.2       noro       51: */
                     52: /*&eg
                     53: Here {\tt size} is the length of {\it signature}.
                     54: {\it signature} is a digital signature of {\it CMO data} by
                     55: a Hash function and is used to detect invalid serialized objects.
                     56: If {\tt size} of Tail is equal to 0, then it has no digital signature.
                     57: */
1.1       noro       58:
1.2       noro       59: //&jp クライアント, サーバの実装には次の4つの選択がある.
                     60: //&eg Currently there are four modes of communicating data.
                     61: /*&jp
1.1       noro       62: \begin{enumerate}
                     63: \item {\tt OX\_DATA} のみを用いて CMObject を送る (mathcap 付).
                     64: \item {\tt OX\_SECURED\_DATA} のみを用いて CMObject を送る.
                     65: \item {\tt OX\_DATA} および
                     66: {\tt OX\_SECURED\_DATA} を混在して
                     67: 使用できるようにする.
                     68: \item {\tt OX\_DATA} のみを用いてかつ mathcap も用いない(一番高速).
                     69: \end{enumerate}
1.2       noro       70: */
                     71: /*&eg
                     72: \begin{enumerate}
                     73: \item Only {\tt OX\_DATA} is used with checking by mathcap.
                     74: \item Only {\tt OX\_SECURED\_DATA} is used.
                     75: \item Both {\tt OX\_DATA} and {\tt OX\_SECURED\_DATA} can be used.
                     76: \item Only {\tt OX\_DATA} is used without checking by mathcap.
                     77: \end{enumerate}
                     78: */
                     79: /*&jp
                     80: 1 の短所は, mathcap の実装が不十分で,理解できない CMObject をうけとる
                     81: と,以後の CMObject は理解できなくなる.  1 の長所は, 長さフィールドの計
                     82: 算をおこなわないため, データを送り出す側に負担がかからないことである.
                     83: 2 の長所は, mathcap の実装が不十分で,理解できない CMObject をうけとっ
                     84: ても,長さフィールドを用いて, 通信回線のダウンを防ぐことができる.  2 の
                     85: 短所は, 長さフィールドの計算をおこなうため, データを送り出す側に負担が
                     86: かかることである.
                     87: */
                     88: /*&eg
                     89: Suppose that the mathcap handling is incomplete and an application
1.3     ! noro       90: has received unknown CMObject.
1.2       noro       91: In mode 1, the application cannot detect the end of the CMObject
                     92: and it will not be able to understand the subsequent messages.
                     93: In mode 2, the application can detect the end of the unknown CMObject
                     94: from the size information. However, in mode 2, additional cost is
                     95: required on the sender to compute the total length of CMObjects.
                     96: */
1.1       noro       97:
1.2       noro       98: //&jp 現在のすべてのサンプルサーバは, 1, 4 のみを実装している.
                     99: //&teg Currently all sample servers implements only 1 and 4.
1.1       noro      100:
1.2       noro      101: /*&jp
                    102: mathcap の交換はセッションの開始時点で必須という訳ではないことに注意さ
                    103: れたい.  たとえば,モード 4 で通信して,それから, mathcap を交換して,モー
                    104: ド 1 へ移行することも可能なように実装すべきである.
                    105: */
                    106: /*&eg
                    107: Note that the exchange of mathcaps are not necessary at the start
                    108: of a session. Any server should be implemented so that it can
                    109: change the communication mode dynamically, say, from 4 to 1.
                    110: */
                    111:
                    112: //&jp \subsection{サーバスタックマシンはローカルな拡張機能をもってよい}
                    113: //&eg \subsection{Local extension on server stack machines}
1.1       noro      114:
                    115: \begin{verbatim}
                    116: #define  CMO_PRIVATE   0x7fff0000
                    117: \end{verbatim}
                    118:
1.2       noro      119: /*&jp
1.1       noro      120: {\tt CMO\_PRIVATE} = {\tt OX\_PRIVATE} = {\tt SM\_PRIVATE}
                    121: よりはじまる, 0x10000 個の ID は, private 領域として予約されている.
                    122: 各サーバの開発者間で表現方法につきまだ合意がないような, CMObject,
                    123: OX Message, SMobject を表現するために使用する.
1.2       noro      124: */
                    125: /*&eg
                    126: 0x10000 ID's beginning from
                    127: {\tt CMO\_PRIVATE} = {\tt OX\_PRIVATE} = {\tt SM\_PRIVATE}
1.3     ! noro      128: are reserved for private use.
1.2       noro      129: They can be used to represent OX tags, CMObjects, SMobjects
                    130: which are not authorized yet.
                    131: */
                    132:
1.1       noro      133:
1.2       noro      134: //&jp \subsection{MathLink や OpenMath などの通信規約の実装}
                    135: //&eg \subsection{Implementation of other protocols such as MathLink and OpenMath}
1.1       noro      136:
1.2       noro      137: /*&jp
1.1       noro      138: Open asir, open sm1 と Mathematica の用いている MathLink や
                    139: Open Math (\cite{openmath})
                    140: プロトコルを変換するための
                    141: ライブラリやサーバを用意すれば, {\tt asir} や {\tt kan/sm1} の
                    142: 内部構造を理解することなしに, これらに準拠したシステムと通信できる.
1.2       noro      143: */
                    144: /*&eg
                    145: If we provide a library or a server for protocol conversion
                    146: between CMO and ``foreign'' protocols such as MathLink or OpenMath,
                    147: a client conforming to such protocols can communicate with
                    148: Asir or kan/sm1 without knowing their internal structures.
                    149: */
1.1       noro      150:
1.2       noro      151: //&jp \subsection{共通スタックマシン言語}
                    152: //&eg \subsection{Common operations on stack machines}
1.1       noro      153:
1.2       noro      154: /*&jp
1.1       noro      155: CMO に付随した, たとえば, Integer 32 に対する,
                    156: add, sub, mul, などの基本的な計算は {\tt SM\_executeFunction}
                    157: で全てのシステムで実行できるように検討している.
                    158: スタックマシンの制御構造についても検討している.
1.2       noro      159: */
                    160: /*&eg
                    161: Fundamental operations such as {\tt add}, {\tt sub}, {\tt mul} should be
                    162: executed on any server by {\tt SM\_executeFunction}.
                    163: Control structures on stack machines such as {\tt if} and {\tt for}
1.3     ! noro      164: are also being considered.
1.1       noro      165: */
                    166:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>