次: , 前: Sentinels, 上: Processes


36.11 トランザクションキュー

トランザクションを用いたサブプロセスとの通信に トランザクションキュー(transaction queue)を使えます。 まずtq-createを用いて、 指定したプロセスとの通信用トランザクションキューを作成します。 そして、トランザクションを送るためにtq-enqueueを呼び出します。

— 機能: tq-create process

この関数は、プロセスprocessとの通信用トランザクションキューを 作成して返す。 引数processは、バイトストリームを送受信できる機能を 有するサブプロセスであること。 つまり、子プロセスであるか、別のマシン上の可能性もある サーバーへのTCP接続である。

— 機能: tq-enqueue queue question regexp closure fn

この関数はキューqueueにトランザクションを送る。 キューを指定することは、 通信相手のサブプロセスを指定する効果がある。

引数questionは、トランザクションを始める送出メッセージである。 引数fnは、対応する応答が戻ってきたときに呼び出す関数である。 その関数は2つの引数、closureと受け取った応答で呼び出される。

引数regexpは、1つの応答だけに一致する正規表現である。 tq-enqueueが応答の末尾を判定するために使う。

tq-enqueueの戻り値そのものに意味はない。

— 機能: tq-close queue

未処理のトランザクションすべてが完了するのを待ち、 接続や子プロセスを終了して、 トランザクションキューqueueを終える。

トランザクションキューはフィルタ関数を用いて実装してあります。 See Filter Functions