トランザクションキューを使用すると、トランザクションを介してサブプロセスと通信できます。まずtq-createを使用して、指定したプロセスと通信するトランザクションキューを作成します。次に、tq-enqueueを呼び出してトランザクションを送信できます。
この関数は、process と通信するトランザクションキューを作成して返します。引数 process には、バイトストリームの送受信が可能なサブプロセスを指定する必要があります。これは子プロセスであってもよいですし、別のマシン上にある可能性のあるサーバーへの TCP 接続であっても構いません。
この関数は、トランザクションをキュー queue に送信します。キューを指定することで、通信先のサブプロセスを指定することになります。
引数 question は、トランザクションを開始する送信メッセージです。引数 fn は、対応する応答が返ってきた際に呼び出す関数であり、closure と受信した応答という2つの引数で呼び出されます。
引数 regexp
は、回答全体の末尾にあるテキストに一致し、それより前の部分には一致しない正規表現です。これにより、tq-enqueue は回答の終了位置を判定します。
引数 delay-question が nil
以外の場合、プロセスがそれまでの質問への回答を完了するまで、この質問の送信を待機してください。これにより、一部のプロセスにおいてより信頼性の高い結果が得られます。
トランザクションキュー queue をシャットダウンし、保留中のすべてのトランザクションが完了するのを待ってから、接続または子プロセスを終了します。
トランザクションキューは、フィルタ関数を用いて実装されます。フィルタ関数の処理を参照してください。