1
|
|
|
"""Msgpack-rpc subpackage. |
2
|
|
|
|
3
|
|
|
This package implements a msgpack-rpc client. While it was designed for |
4
|
|
|
handling some Nvim particularities(server->client requests for example), the |
5
|
|
|
code here should work with other msgpack-rpc servers. |
6
|
|
|
""" |
7
|
6 |
|
from .async_session import AsyncSession |
8
|
6 |
|
from .event_loop import EventLoop |
9
|
6 |
|
from .msgpack_stream import MsgpackStream |
10
|
6 |
|
from .session import ErrorResponse, Session |
11
|
|
|
|
12
|
|
|
|
13
|
6 |
|
__all__ = ('tcp_session', 'socket_session', 'stdio_session', 'child_session', |
14
|
|
|
'ErrorResponse') |
15
|
|
|
|
16
|
|
|
|
17
|
6 |
|
def session(transport_type='stdio', *args, **kwargs): |
18
|
|
|
loop = EventLoop(transport_type, *args, **kwargs) |
19
|
|
|
msgpack_stream = MsgpackStream(loop) |
20
|
|
|
async_session = AsyncSession(msgpack_stream) |
21
|
|
|
session = Session(async_session) |
22
|
|
|
return session |
23
|
|
|
|
24
|
|
|
|
25
|
6 |
|
def tcp_session(address, port=7450): |
26
|
|
|
"""Create a msgpack-rpc session from a tcp address/port.""" |
27
|
|
|
return session('tcp', address, port) |
28
|
|
|
|
29
|
|
|
|
30
|
6 |
|
def socket_session(path): |
31
|
|
|
"""Create a msgpack-rpc session from a unix domain socket.""" |
32
|
|
|
return session('socket', path) |
33
|
|
|
|
34
|
|
|
|
35
|
6 |
|
def stdio_session(): |
36
|
|
|
"""Create a msgpack-rpc session from stdin/stdout.""" |
37
|
|
|
return session('stdio') |
38
|
|
|
|
39
|
|
|
|
40
|
6 |
|
def child_session(argv): |
41
|
|
|
"""Create a msgpack-rpc session from a new Nvim instance.""" |
42
|
|
|
return session('child', argv) |
43
|
|
|
|