トランザクションを用いてサブプロセスと対話するためにトランザクションキュー(transaction
queue)を使用できます。まずtq-create
を使用して指定したプロセスと対話するためのトランザクションキューを作成します。それからトランザクションを送信するためにtq-enqueue
を呼び出すことができます。
この関数はprocessと対話するトランザクションキューを作成してリターンする。引数processはバイトストリームを送受信する能力をもつサブプロセスであること。これは子プロセス、または(おそらく別のマシン上の)サーバーへのTCP接続かもしれない。
この関数はキューqueueにトランザクションを送信する。キューの指定は対話するサブプロセスを指定する効果をもつ。
引数questionはトランザクションを開始するために発信するメッセージ。引数fnは、それにたいする応答が返信された際に呼び出す関数。これはclosureと受信した応答という2つの引数で呼び出される。
引数regexpは応答全体の終端にマッチして、それより前にはマッチしない正規表現であること。これはtq-enqueue
が応答の終わりを決定する方法である。
引数delay-questionが非nil
なら、そのプロセスが以前に発信したすべてのメッセージへの返信が完了するまでメッセージの送信を遅延する。これによりいくつかのプロセスにたいして、より信頼性のある結果が生成される。
保留中のすべてのトランザクションの完了を待機して、トランザクションキューqueueをシャットダウンして、それから接続または子プロセスを終了する。
トランザクションキューはフィルター関数により実装されています。プロセスのフィルター関数を参照してください。