diff options
Diffstat (limited to 'bitbake/lib/bb/asyncrpc/client.py')
-rw-r--r-- | bitbake/lib/bb/asyncrpc/client.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/bitbake/lib/bb/asyncrpc/client.py b/bitbake/lib/bb/asyncrpc/client.py index 29a5ab76aa..a350b4fb12 100644 --- a/bitbake/lib/bb/asyncrpc/client.py +++ b/bitbake/lib/bb/asyncrpc/client.py | |||
@@ -10,11 +10,34 @@ import json | |||
10 | import os | 10 | import os |
11 | import socket | 11 | import socket |
12 | import sys | 12 | import sys |
13 | import re | ||
13 | import contextlib | 14 | import contextlib |
14 | from threading import Thread | 15 | from threading import Thread |
15 | from .connection import StreamConnection, WebsocketConnection, DEFAULT_MAX_CHUNK | 16 | from .connection import StreamConnection, WebsocketConnection, DEFAULT_MAX_CHUNK |
16 | from .exceptions import ConnectionClosedError, InvokeError | 17 | from .exceptions import ConnectionClosedError, InvokeError |
17 | 18 | ||
19 | UNIX_PREFIX = "unix://" | ||
20 | WS_PREFIX = "ws://" | ||
21 | WSS_PREFIX = "wss://" | ||
22 | |||
23 | ADDR_TYPE_UNIX = 0 | ||
24 | ADDR_TYPE_TCP = 1 | ||
25 | ADDR_TYPE_WS = 2 | ||
26 | |||
27 | def parse_address(addr): | ||
28 | if addr.startswith(UNIX_PREFIX): | ||
29 | return (ADDR_TYPE_UNIX, (addr[len(UNIX_PREFIX) :],)) | ||
30 | elif addr.startswith(WS_PREFIX) or addr.startswith(WSS_PREFIX): | ||
31 | return (ADDR_TYPE_WS, (addr,)) | ||
32 | else: | ||
33 | m = re.match(r"\[(?P<host>[^\]]*)\]:(?P<port>\d+)$", addr) | ||
34 | if m is not None: | ||
35 | host = m.group("host") | ||
36 | port = m.group("port") | ||
37 | else: | ||
38 | host, port = addr.split(":") | ||
39 | |||
40 | return (ADDR_TYPE_TCP, (host, int(port))) | ||
18 | 41 | ||
19 | class AsyncClient(object): | 42 | class AsyncClient(object): |
20 | def __init__( | 43 | def __init__( |