利便性を考慮し、jsonrpc
ライブラリには、ローカルのサブプロセス(標準入力および標準出力を使用)や TCP ホスト(ソケットを使用)、あるいは Emacs
のプロセスオブジェクトが表現可能なその他のリモートエンドポイント(Processes を参照)と通信できる jsonrpc-process-connection トランスポートの実装が組み込まれています。
このトランスポートでは、JSONRPCメッセージはネットワーク上でプレーンテキストとしてエンコードされ、“Content-Length”などの基本的なHTTP形式のエンベロープヘッダーが先頭に付加されます。
JSONRPC 上でこのトランスポート方式を利用するアプリケーションの例については、Language Server Protocol を参照してください。
必須の :request-dispatcher および :notification-dispatcher 初期化引数に加え、jsonrpc-process-connection
クラスの利用者は、以下の初期化引数をキーワードと値のペアとして make-instance
に渡す必要があります:
:processvalueには、実行中のプロセスオブジェクト、またはそのようなオブジェクトを1つ生成する引数なしの関数を指定する必要があります。プロセスオブジェクトが渡された場合、そのオブジェクトにはあらかじめ確立された接続が含まれている必要があります。そうでない場合は、オブジェクトが作成された直後に関数が呼び出されます。
:on-shutdownvalueは、単一の引数であるjsonrpc-process-connectionオブジェクトを受け取る関数である必要があります。この関数は、基盤となるプロセスオブジェクトが削除された後(jsonrpc-shutdownによって意図的に、あるいは何らかの外部要因により予期せず)に呼び出されます。