jsonrpc
ライブラリーには利便性のために、ローカルサブプロセス(標準入力と標準出力を使用)やTCPホスト(ソケットを使用)、またはEmacsのプロセスオブジェクトが表現可能な他のリモートのエンドポイント(プロセスを参照)と対話可能なビルトインのjsonrpc-process-connection
トランスポート実装が付属しています。
このトランスポートを使用することによりJSONRPCメッセージはwire上にプレーンテキストとしてエンコードされて、“Content-Length”のように何らかの基本的なHTTPスタイルのエンベロープヘッダーが前置されます。
このJSONRPC最上層のトランスポートスキームを使用したアプリケーションの例は、Language Server Protocolを参照してください。
:request-dispatcher
と:notification-dispatcher
という必須の初期化引数(initarg)に加えて、jsonrpc-process-connection
クラスのユーザーはmake-instance
へのキーワード/値ペアとして以下の初期化引数を渡す必要があります:
:process
値は生きたプロセスオブジェクト、またはそのようなオブジェクトを生成する引数のない関数でなければならない。プロセスオブジェクトを渡された場合には、そのオブジェクトには事前に確立された接続が含まれていることが期待される。それ以外の場合には、オブジェクトの作成直後に関数が呼び出される。
:on-shutdown
値はjsonrpc-process-connection
オブジェクトを単一の引数とする関数でなければならない。この関数は背後にあるプロセスオブジェクトの削除(jsonrpc-shutdown
による故意の削除、または何らかの外部要因による予期せぬ削除)の後に呼び出される。