Annotation of OpenXM/doc/OpenXM-specs/control.tex, Revision 1.1.1.1
1.1 noro 1: %% $OpenXM$
2: //&jp \section{コントロールメッセージ (SMObject/TCPIP/Control)}
3: //&eg \section{Control message (SMObject/TCPIP/Control)} (This section has not been translated.)
4:
5: /*&jp
6: \begin{enumerate}
7: \item
8: サーバは {\tt SM\_control\_reset\_connection}
9: メッセージを受信したら, 現在の計算を中断する.
10: 中断操作は細心の注意をもって行なわないといけない.
11: サンプルサーバ ({\tt oxmain.c})では, コントロールメッセージの
12: 処理は別のプロセスがおこなっており, SIGUSR1 割り込みをスタックマシンへ
13: かける.
14: もしサーバがメッセージの通信中であれば, このコントロールメッセージ
15: をすぐには実行せず, メッセージ通信を終了するのを待つ.
16: 当然, メッセージを発信中に, このメッセージを送信してもいけない.
17: (Java 風にいえば, すべての メッセージは synchronized object である.)
18: また, たとえば file IO なども, 中断をうけてはならない, synchronized な
19: 操作であろう.
20: クライアントがサーバに controlResetConnection コントロールメッセージを
21: おくったら, サーバは, 現在の受信バッファをすべてクリアし,
22: クライアントへ
23: {\tt OX\_SYNC\_BALL}
24: を送る.
25: クライアントは, コントロールメッセージをおくったあと,
26: 待機モードに入り, {\tt OX\_SYNC\_BALL}
27: をうけとるまですべてのメッセージを読み飛ばす.
28: クライアントは {\tt OX\_SYNC\_BALL} をうけとったら,
29: サーバに {\tt OX\_SYNC\_BALL} を送る.
30: サーバは, 最初の {\tt OX\_SYNC\_BALL} を投げたあと,
31: 待機モードに入り,
32: {\tt OX\_SYNC\_BALL}
33: をうけとるまですべてのメッセージを読み飛ばす.
34: %% 最後に, サーバ
35: %% はすべての操作が終了したことを通知するため,
36: %% クライアントに
37: %% {\tt OX\_SYNC\_BALL} を投げる.
38: \\ Request:
39: \begin{tabular}{|c|c|} \hline
40: {\tt int32 OX\_COMMAND} & {\tt int32 SM\_control\_reset\_connection} \\
41: \hline
42: \end{tabular}
43: \\ Result:
44: \begin{tabular}{|c|c|} \hline
45: {\tt int32 OX\_DATA} & {\tt CMO\_INT32} {\rm result} \\
46: \hline
47: \end{tabular}
48:
49: @@@
50:
51: \item
52: サーバはこのメッセージを受信したらただちにコントロールメッセージへの
53: 返答をおくり, すべてのファイルをクローズして終了する.
54: \\ Request:
55: \begin{tabular}{|c|c|} \hline
56: {\tt int32 OX\_COMMAND} & {\tt int32 SM\_control\_kill} \\
57: \hline
58: \end{tabular}
59: \\ Result:
60: Empty \\
61:
62:
63: \end{enumerate}
64:
65: \medbreak
66: \noindent
67: {\bf 例}: (シリアル番号は省略してある.)\
68: \begin{verbatim}
69: 0 0 2 01 (OX_COMMAND)
70: 0 0 4 06 (SM_control_reset_connection)
71: \end{verbatim}
72:
73: Reset に対する返事.
74: \begin{verbatim}
75: 0 0 2 02 (OX_DATA)
76: 0 0 0 2 (CMO_INT32)
77: 0 0 0 0 ( 0 )
78: \end{verbatim}
79:
80:
81: 第1のチャンネルでは次の {\tt OX\_SYNC\_BALL} が交換されて同期が
82: 取られる.
83: \begin{verbatim}
84: 0 0 2 03 (OX_SYNC_BALL)
85: \end{verbatim}
86:
87: */
88:
89:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>