diff options
Diffstat (limited to 'bitbake/lib/hashserv/__init__.py')
| -rw-r--r-- | bitbake/lib/hashserv/__init__.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/bitbake/lib/hashserv/__init__.py b/bitbake/lib/hashserv/__init__.py index 3a4018353f..56b9c6bc82 100644 --- a/bitbake/lib/hashserv/__init__.py +++ b/bitbake/lib/hashserv/__init__.py | |||
| @@ -9,11 +9,15 @@ import re | |||
| 9 | import sqlite3 | 9 | import sqlite3 |
| 10 | import itertools | 10 | import itertools |
| 11 | import json | 11 | import json |
| 12 | from urllib.parse import urlparse | ||
| 12 | 13 | ||
| 13 | UNIX_PREFIX = "unix://" | 14 | UNIX_PREFIX = "unix://" |
| 15 | WS_PREFIX = "ws://" | ||
| 16 | WSS_PREFIX = "wss://" | ||
| 14 | 17 | ||
| 15 | ADDR_TYPE_UNIX = 0 | 18 | ADDR_TYPE_UNIX = 0 |
| 16 | ADDR_TYPE_TCP = 1 | 19 | ADDR_TYPE_TCP = 1 |
| 20 | ADDR_TYPE_WS = 2 | ||
| 17 | 21 | ||
| 18 | UNIHASH_TABLE_DEFINITION = ( | 22 | UNIHASH_TABLE_DEFINITION = ( |
| 19 | ("method", "TEXT NOT NULL", "UNIQUE"), | 23 | ("method", "TEXT NOT NULL", "UNIQUE"), |
| @@ -84,6 +88,8 @@ def setup_database(database, sync=True): | |||
| 84 | def parse_address(addr): | 88 | def parse_address(addr): |
| 85 | if addr.startswith(UNIX_PREFIX): | 89 | if addr.startswith(UNIX_PREFIX): |
| 86 | return (ADDR_TYPE_UNIX, (addr[len(UNIX_PREFIX):],)) | 90 | return (ADDR_TYPE_UNIX, (addr[len(UNIX_PREFIX):],)) |
| 91 | elif addr.startswith(WS_PREFIX) or addr.startswith(WSS_PREFIX): | ||
| 92 | return (ADDR_TYPE_WS, (addr,)) | ||
| 87 | else: | 93 | else: |
| 88 | m = re.match(r'\[(?P<host>[^\]]*)\]:(?P<port>\d+)$', addr) | 94 | m = re.match(r'\[(?P<host>[^\]]*)\]:(?P<port>\d+)$', addr) |
| 89 | if m is not None: | 95 | if m is not None: |
| @@ -103,6 +109,9 @@ def create_server(addr, dbname, *, sync=True, upstream=None, read_only=False): | |||
| 103 | (typ, a) = parse_address(addr) | 109 | (typ, a) = parse_address(addr) |
| 104 | if typ == ADDR_TYPE_UNIX: | 110 | if typ == ADDR_TYPE_UNIX: |
| 105 | s.start_unix_server(*a) | 111 | s.start_unix_server(*a) |
| 112 | elif typ == ADDR_TYPE_WS: | ||
| 113 | url = urlparse(a[0]) | ||
| 114 | s.start_websocket_server(url.hostname, url.port) | ||
| 106 | else: | 115 | else: |
| 107 | s.start_tcp_server(*a) | 116 | s.start_tcp_server(*a) |
| 108 | 117 | ||
| @@ -116,6 +125,8 @@ def create_client(addr): | |||
| 116 | (typ, a) = parse_address(addr) | 125 | (typ, a) = parse_address(addr) |
| 117 | if typ == ADDR_TYPE_UNIX: | 126 | if typ == ADDR_TYPE_UNIX: |
| 118 | c.connect_unix(*a) | 127 | c.connect_unix(*a) |
| 128 | elif typ == ADDR_TYPE_WS: | ||
| 129 | c.connect_websocket(*a) | ||
| 119 | else: | 130 | else: |
| 120 | c.connect_tcp(*a) | 131 | c.connect_tcp(*a) |
| 121 | 132 | ||
| @@ -128,6 +139,8 @@ async def create_async_client(addr): | |||
| 128 | (typ, a) = parse_address(addr) | 139 | (typ, a) = parse_address(addr) |
| 129 | if typ == ADDR_TYPE_UNIX: | 140 | if typ == ADDR_TYPE_UNIX: |
| 130 | await c.connect_unix(*a) | 141 | await c.connect_unix(*a) |
| 142 | elif typ == ADDR_TYPE_WS: | ||
| 143 | await c.connect_websocket(*a) | ||
| 131 | else: | 144 | else: |
| 132 | await c.connect_tcp(*a) | 145 | await c.connect_tcp(*a) |
| 133 | 146 | ||
