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