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__( |
