41.13 Очереди транзакций

Вы можете использовать очередь транзакций для связи с подпроцессом с помощью транзакций. Сначала используйте tq-create для создания очереди транзакций, которая обменивается данными с указанным процессом. Затем вы можете вызвать tq-enqueue, чтобы отправить транзакцию.

Функция: tq-create process

Эта функция создает и возвращает очередь транзакций, которая обменивается данными с process. Аргумент process должен быть подпроцессом, способным отправлять и принимать потоки байтов. Это может быть дочерний процесс или TCP-соединение с сервером, возможно, на другой машине.

Функция: tq-enqueue queue question regexp closure fn &optional delay-question

Эта функция отправляет транзакцию в очередь queue. Указание очереди эквивалентно указанию подпроцесса, с которым нужно общаться.

Аргумент question — это исходящее сообщение, которое инициирует транзакцию. Аргумент fn — это функция, которую нужно вызвать, когда приходит соответствующий ответ; она вызывается с двумя аргументами: closure и полученный ответ.

Аргумент regexp — это регулярное выражение, которое должно соответствовать тексту в конце всего ответа, но ничему до него; таким образом tq-enqueue определяет, где заканчивается ответ.

Если аргумент delay-question не равен nil, отложите отправку этого вопроса до тех пор, пока процесс не закончит отвечать на любые предыдущие вопросы. Это обеспечивает более надежные результаты с некоторыми процессами.

Функция: tq-close queue

Закрывает очередь транзакций queue, дожидается завершения всех ожидающих транзакций, а затем завершает соединение или дочерний процесс.

Очереди транзакций реализуются с помощью фильтрующей функции. См. Функции фильтрации процессов.