@Override protected void sendTrailers(HttpExchange exchange, Callback callback) { Supplier<HttpFields> trailers = exchange.getRequest().getTrailers(); MetaData metaData = new MetaData(HttpVersion.HTTP_2, trailers.get()); Stream stream = getHttpChannel().getStream(); HeadersFrame trailersFrame = new HeadersFrame(stream.getId(), metaData, null, true); stream.headers(trailersFrame, callback); } }
@Override protected void sendContent(HttpExchange exchange, HttpContent content, Callback callback) { if (content.isConsumed()) { callback.succeeded(); } else { Stream stream = getHttpChannel().getStream(); Supplier<HttpFields> trailers = exchange.getRequest().getTrailers(); DataFrame frame = new DataFrame(stream.getId(), content.getByteBuffer(), trailers == null && content.isLast()); stream.data(frame, callback); } }
Supplier<HttpFields> trailers = request.getTrailers(); boolean hasContent = content.hasContent(); if (!hasContent)
Supplier<HttpFields> trailers = request.getTrailers(); sendContent(exchange, content, trailers == null ? lastCallback : trailersCallback); return Action.IDLE;
public HeadersCallback(HttpExchange exchange, HttpContent content, Callback callback, HttpConnectionOverHTTP httpConnectionOverHTTP) { super(false); this.exchange = exchange; this.callback = callback; this.httpConnectionOverHTTP = httpConnectionOverHTTP; HttpRequest request = exchange.getRequest(); ContentProvider requestContent = request.getContent(); long contentLength = requestContent == null ? -1 : requestContent.getLength(); String path = request.getPath(); String query = request.getQuery(); if (query != null) path += "?" + query; metaData = new MetaData.Request(request.getMethod(), new HttpURI(path), request.getVersion(), request.getHeaders(), contentLength); metaData.setTrailerSupplier(request.getTrailers()); if (!expects100Continue(request)) { content.advance(); contentBuffer = content.getByteBuffer(); lastContent = content.isLast(); } }
HttpURI uri = HttpURI.createHttpURI(request.getScheme(), request.getHost(), request.getPort(), path, null, request.getQuery(), null); MetaData.Request metaData = new MetaData.Request(request.getMethod(), uri, HttpVersion.HTTP_2, request.getHeaders()); Supplier<HttpFields> trailers = request.getTrailers(); metaData.setTrailerSupplier(trailers); HeadersFrame headersFrame = new HeadersFrame(metaData, null, trailers == null && !content.hasContent());