Annotation of OpenXM/doc/OpenXM-specs/control.tex, Revision 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>