Для удобства библиотека jsonrpc поставляется с встроенной реализацией транспорта
jsonrpc-process-connection, которая может общаться с локальными подпроцессами (используя стандартный ввод и стандартный
вывод); или с TCP-хостами (используя сокеты); или с любой другой удаленной конечной точкой, которую объект процесса Emacs может представлять (см. Процессы).
При использовании этого транспорта сообщения JSONRPC кодируются в виде простого текста и предшествуют некоторыми базовыми заголовками в стиле HTTP, такими как “Content-Length”.
Пример приложения, использующего эту схему транспорта поверх JSONRPC, см. в Language Server Protocol.
Помимо обязательных аргументов инициализации :request-dispatcher и
:notification-dispatcher, пользователи класса
jsonrpc-process-connection должны передать следующие аргументы инициализации в виде пар ключ-значение в make-instance:
:processЗначение должно быть живым объектом процесса или функцией без аргументов, возвращающей такой объект. Если передан объект процесса, ожидается, что объект содержит предварительно установленное соединение; в противном случае функция вызывается сразу после создания объекта.
:on-shutdownЗначение должно быть функцией с одним аргументом, объектом
jsonrpc-process-connection. Функция вызывается после удаления базового
объекта процесса (либо намеренно с помощью jsonrpc-shutdown,
либо неожиданно, из-за какой-либо внешней причины).