Процессные соединения JSONRPC
Для удобства, библиотека jsonrpc поставляется со встроенной реализацией транспорта jsonrpc-process-connection, который может общаться с локальными подпроцессами (используя стандартный ввод и стандартный вывод); или хостами TCP (используя сокеты); или любым другим удаленным конечным пунктом, который может представлять объект процесса Emacs (см. Процессы).
Используя этот транспорт, сообщения JSONRPC кодируются в проводе как обычный текст и предваряются некоторыми основными заголовками в стиле HTTP, такими как «Content-Length».
Пример приложения, использующего эту схему транспорта поверх JSONRPC, см. в Протоколе языка сервера.
Вместе с обязательными :request-dispatcher и :notification-dispatcher параметрами инициализации, пользователи класса jsonrpc-process-connection должны передать следующие параметры инициализации в виде пар «ключ-значение» классу make-instance:
:process-
Значение должно быть живым объектом процесса или функцией без аргументов, производящей такой объект. Если передается объект процесса, ожидается, что объект содержит предварительно установленное соединение; в противном случае, функция вызывается сразу после создания объекта.
:on-shutdownЗначение должно быть функцией с одним аргументом, объектом
jsonrpc-process-connection. Функция вызывается после удаления базового объекта процесса (либо преднамеренно классомjsonrpc-shutdown, либо непредвиденно из-за какой-либо внешней причины).
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Process_002dbased-JSONRPC-connections.html