@Override
public final void handleRequest(Request request, BufferedContentChannel requestContent, ResponseHandler responseHandler) {
if (log.isLoggable(LogLevel.DEBUG)) {
log.log(LogLevel.DEBUG, "In " + this.getClass() + ".handleRequest()");
}
com.yahoo.jdisc.http.HttpRequest jdiscRequest = asHttpRequest(request);
HttpRequest httpRequest = new HttpRequest(jdiscRequest, new UnsafeContentInputStream(requestContent.toReadable()));
LazyContentChannel channel = null;
try {
channel = new LazyContentChannel(httpRequest, responseHandler, metric, log);
HttpResponse httpResponse = handle(httpRequest, channel);
channel.setHttpResponse(httpResponse);
render(httpRequest, httpResponse, channel, jdiscRequest.creationTime(TimeUnit.MILLISECONDS));
} catch (Exception e) {
metric.add(RENDERING_ERRORS, 1, null);
log.log(LogLevel.ERROR, "Uncaught exception handling request", e);
if (channel != null) {
channel.setHttpResponse(null);
channel.close(null);
}
} catch (Error e) {
com.yahoo.protect.Process.logAndDie("java.lang.Error handling request", e);
}
}