diff options
Diffstat (limited to 'bitbake/lib/bb')
| -rw-r--r-- | bitbake/lib/bb/asyncrpc/serv.py | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/bitbake/lib/bb/asyncrpc/serv.py b/bitbake/lib/bb/asyncrpc/serv.py index a66117acad..46d54fb511 100644 --- a/bitbake/lib/bb/asyncrpc/serv.py +++ b/bitbake/lib/bb/asyncrpc/serv.py | |||
| @@ -138,14 +138,20 @@ class StreamServer(object): | |||
| 138 | 138 | ||
| 139 | 139 | ||
| 140 | class TCPStreamServer(StreamServer): | 140 | class TCPStreamServer(StreamServer): |
| 141 | def __init__(self, host, port, handler, logger): | 141 | def __init__(self, host, port, handler, logger, *, reuseport=False): |
| 142 | super().__init__(handler, logger) | 142 | super().__init__(handler, logger) |
| 143 | self.host = host | 143 | self.host = host |
| 144 | self.port = port | 144 | self.port = port |
| 145 | self.reuseport = reuseport | ||
| 145 | 146 | ||
| 146 | def start(self, loop): | 147 | def start(self, loop): |
| 147 | self.server = loop.run_until_complete( | 148 | self.server = loop.run_until_complete( |
| 148 | asyncio.start_server(self.handle_stream_client, self.host, self.port) | 149 | asyncio.start_server( |
| 150 | self.handle_stream_client, | ||
| 151 | self.host, | ||
| 152 | self.port, | ||
| 153 | reuse_port=self.reuseport, | ||
| 154 | ) | ||
| 149 | ) | 155 | ) |
| 150 | 156 | ||
| 151 | for s in self.server.sockets: | 157 | for s in self.server.sockets: |
| @@ -209,11 +215,12 @@ class UnixStreamServer(StreamServer): | |||
| 209 | 215 | ||
| 210 | 216 | ||
| 211 | class WebsocketsServer(object): | 217 | class WebsocketsServer(object): |
| 212 | def __init__(self, host, port, handler, logger): | 218 | def __init__(self, host, port, handler, logger, *, reuseport=False): |
| 213 | self.host = host | 219 | self.host = host |
| 214 | self.port = port | 220 | self.port = port |
| 215 | self.handler = handler | 221 | self.handler = handler |
| 216 | self.logger = logger | 222 | self.logger = logger |
| 223 | self.reuseport = reuseport | ||
| 217 | 224 | ||
| 218 | def start(self, loop): | 225 | def start(self, loop): |
| 219 | import websockets.server | 226 | import websockets.server |
| @@ -224,6 +231,7 @@ class WebsocketsServer(object): | |||
| 224 | self.host, | 231 | self.host, |
| 225 | self.port, | 232 | self.port, |
| 226 | ping_interval=None, | 233 | ping_interval=None, |
| 234 | reuse_port=self.reuseport, | ||
| 227 | ) | 235 | ) |
| 228 | ) | 236 | ) |
| 229 | 237 | ||
| @@ -262,14 +270,26 @@ class AsyncServer(object): | |||
| 262 | self.loop = None | 270 | self.loop = None |
| 263 | self.run_tasks = [] | 271 | self.run_tasks = [] |
| 264 | 272 | ||
| 265 | def start_tcp_server(self, host, port): | 273 | def start_tcp_server(self, host, port, *, reuseport=False): |
| 266 | self.server = TCPStreamServer(host, port, self._client_handler, self.logger) | 274 | self.server = TCPStreamServer( |
| 275 | host, | ||
| 276 | port, | ||
| 277 | self._client_handler, | ||
| 278 | self.logger, | ||
| 279 | reuseport=reuseport, | ||
| 280 | ) | ||
| 267 | 281 | ||
| 268 | def start_unix_server(self, path): | 282 | def start_unix_server(self, path): |
| 269 | self.server = UnixStreamServer(path, self._client_handler, self.logger) | 283 | self.server = UnixStreamServer(path, self._client_handler, self.logger) |
| 270 | 284 | ||
| 271 | def start_websocket_server(self, host, port): | 285 | def start_websocket_server(self, host, port, reuseport=False): |
| 272 | self.server = WebsocketsServer(host, port, self._client_handler, self.logger) | 286 | self.server = WebsocketsServer( |
| 287 | host, | ||
| 288 | port, | ||
| 289 | self._client_handler, | ||
| 290 | self.logger, | ||
| 291 | reuseport=reuseport, | ||
| 292 | ) | ||
| 273 | 293 | ||
| 274 | async def _client_handler(self, socket): | 294 | async def _client_handler(self, socket): |
| 275 | address = socket.address | 295 | address = socket.address |
