public void dispatch() throws IOException { ServletRequestReader servletRequestReader; try { servletRequestReader = handleRequest(); } catch (Throwable throwable) { servletResponseController.trySendError(throwable); servletResponseController.finishedFuture().whenComplete((result, exception) -> completeRequestCallback.accept(null, throwable)); return; } try { onError(servletRequestReader.finishedFuture, servletResponseController::trySendError); onError(servletResponseController.finishedFuture(), servletRequestReader::onError); CompletableFuture.allOf(servletRequestReader.finishedFuture, servletResponseController.finishedFuture()) .whenComplete(completeRequestCallback); } catch (Throwable throwable) { log.log(Level.WARNING, "Failed registering finished listeners.", throwable); } }
ContentChannel handleRequestFilterResponse(Response response) { try { jettyRequest.getInputStream().close(); ContentChannel responseContentChannel = servletResponseController.responseHandler.handleResponse(response); servletResponseController.finishedFuture().whenComplete(completeRequestCallback); return responseContentChannel; } catch (IOException e) { throw throwUnchecked(e); } }