Internal proxy server handler class.
| 240 | |
| 241 | |
| 242 | class ProxyServerHandler: |
| 243 | """Internal proxy server handler class.""" |
| 244 | |
| 245 | current = None |
| 246 | |
| 247 | def __init__( |
| 248 | self, |
| 249 | sock, |
| 250 | listen_port, |
| 251 | web_port, |
| 252 | timeout_client, |
| 253 | timeout_server, |
| 254 | tracker_addr, |
| 255 | index_page=None, |
| 256 | resource_files=None, |
| 257 | ): |
| 258 | assert ProxyServerHandler.current is None |
| 259 | ProxyServerHandler.current = self |
| 260 | if web_port: |
| 261 | handlers = [(r"/ws", WebSocketHandler)] |
| 262 | if index_page: |
| 263 | handlers.append( |
| 264 | (r"/", RequestHandler, {"file_path": index_page, "rpc_web_port": web_port}) |
| 265 | ) |
| 266 | logging.info("Serving RPC index html page at http://localhost:%d", web_port) |
| 267 | resource_files = resource_files if resource_files else [] |
| 268 | for item in resource_files: |
| 269 | prefix, fname = item |
| 270 | if not prefix.endswith("/"): |
| 271 | prefix += "/" |
| 272 | if not prefix.startswith("/"): |
| 273 | prefix = "/" + prefix |
| 274 | basename = os.path.basename(fname) |
| 275 | pair = (rf"{prefix}{basename}", RequestHandler, {"file_path": fname}) |
| 276 | handlers.append(pair) |
| 277 | logging.info(pair) |
| 278 | self.app = tornado.web.Application(handlers) |
| 279 | self.app.listen(web_port) |
| 280 | |
| 281 | self.sock = sock |
| 282 | self.sock.setblocking(0) |
| 283 | self.loop = ioloop.IOLoop.current() |
| 284 | |
| 285 | def event_handler(_, events): |
| 286 | self._on_event(events) |
| 287 | |
| 288 | self.loop.add_handler(self.sock.fileno(), event_handler, self.loop.READ) |
| 289 | self._client_pool = {} |
| 290 | self._server_pool = {} |
| 291 | self.timeout_alloc = 5 |
| 292 | self.timeout_client = timeout_client |
| 293 | self.timeout_server = timeout_server |
| 294 | # tracker information |
| 295 | self._listen_port = listen_port |
| 296 | self._tracker_addr = tracker_addr |
| 297 | self._tracker_conn = None |
| 298 | self._tracker_pending_puts = [] |
| 299 | self._key_set = set() |
no outgoing calls
no test coverage detected
searching dependent graphs…