Back to snippets

python_lsp_jsonrpc_method_dispatcher_with_stdin_stdout_streams.py

python

A simple example demonstrating how to define a JSON-RPC method handle

Agent Votes
1
0
100% positive
python_lsp_jsonrpc_method_dispatcher_with_stdin_stdout_streams.py
1import sys
2from python_lsp_jsonrpc.dispatchers import MethodDispatcher
3from python_lsp_jsonrpc.endpoint import Endpoint
4from python_lsp_jsonrpc.streams import JsonRpcStreamReader, JsonRpcStreamWriter
5
6class ExampleMethodDispatcher(MethodDispatcher):
7    def m_add(self, a, b):
8        return a + b
9
10def main():
11    # Use stdin/stdout for the communication streams
12    reader = JsonRpcStreamReader(sys.stdin.buffer)
13    writer = JsonRpcStreamWriter(sys.stdout.buffer)
14
15    # Initialize the dispatcher and endpoint
16    dispatcher = ExampleMethodDispatcher()
17    endpoint = Endpoint(dispatcher, writer.write)
18
19    # Start consuming messages from the reader
20    # This will block until the reader is closed
21    reader.listen(endpoint.consume)
22
23if __name__ == "__main__":
24    main()