synchronized (this) int streamId = frame.getStreamId(); if (streamId <= 0) PriorityFrame priority = frame.getPriority(); priority = priority == null ? null : new PriorityFrame(streamId, priority.getParentStreamId(), priority.getWeight(), priority.isExclusive()); frame = new HeadersFrame(streamId, frame.getMetaData(), priority, frame.isEndStream());
@Override public int generate(ByteBufferPool.Lease lease, Frame frame) { HeadersFrame headersFrame = (HeadersFrame)frame; return generateHeaders(lease, headersFrame.getStreamId(), headersFrame.getMetaData(), headersFrame.getPriority(), headersFrame.isEndStream()); }
private void sendHeadersFrame(MetaData.Response info, boolean endStream, Callback callback) { if (LOG.isDebugEnabled()) { LOG.debug("HTTP2 Response #{}/{}:{}{} {}{}{}", stream.getId(), Integer.toHexString(stream.getSession().hashCode()), System.lineSeparator(), HttpVersion.HTTP_2, info.getStatus(), System.lineSeparator(), info.getFields()); } HeadersFrame frame = new HeadersFrame(stream.getId(), info, null, endStream); stream.headers(frame, callback); }
private void onHeaders(HeadersFrame frame, Callback callback) { MetaData metaData = frame.getMetaData(); if (metaData.isRequest() || metaData.isResponse()) { HttpFields fields = metaData.getFields(); long length = -1; if (fields != null) length = fields.getLongField(HttpHeader.CONTENT_LENGTH.asString()); dataLength = length >= 0 ? length : Long.MIN_VALUE; } if (updateClose(frame.isEndStream(), CloseState.Event.RECEIVED)) session.removeStream(this); callback.succeeded(); }
int streamId = frame.getStreamId(); IStream stream = getStream(streamId); if (stream != null) MetaData metaData = frame.getMetaData(); if (metaData.isRequest())
@Override public void onHeaders(Stream stream, HeadersFrame frame) { if (frame.isEndStream()) getConnection().onTrailers((IStream)stream, frame); else close(stream, "invalid_trailers"); }
public Runnable onRequestTrailers(HeadersFrame frame) { HttpFields trailers = frame.getMetaData().getFields(); if (trailers.size() > 0) onTrailers(trailers); if (LOG.isDebugEnabled()) { Stream stream = getStream(); LOG.debug("HTTP2 Request #{}/{}, trailers:{}{}", stream.getId(), Integer.toHexString(stream.getSession().hashCode()), System.lineSeparator(), trailers); } boolean handle = onRequestComplete(); boolean wasDelayed = _delayedUntilContent; _delayedUntilContent = false; return handle || wasDelayed ? this : null; }
private void sendTrailersFrame(MetaData metaData, Callback callback) { if (LOG.isDebugEnabled()) { LOG.debug("HTTP2 Response #{}/{}: trailers", stream.getId(), Integer.toHexString(stream.getSession().hashCode())); } HeadersFrame frame = new HeadersFrame(stream.getId(), metaData, null, true); stream.headers(frame, callback); }
private void onHeaders(HeadersFrame frame, Callback callback) { if (updateClose(frame.isEndStream(), CloseState.Event.RECEIVED)) session.removeStream(this); MetaData metaData = frame.getMetaData(); if (metaData.isRequest() || metaData.isResponse()) { HttpFields fields = metaData.getFields(); long length = -1; if (fields != null) length = fields.getLongField(HttpHeader.CONTENT_LENGTH.asString()); dataLength = length >= 0 ? length : Long.MIN_VALUE; } callback.succeeded(); }
LOG.debug("Received {}", frame); int streamId = frame.getStreamId(); if (!isClientStream(streamId)) MetaData metaData = frame.getMetaData(); if (metaData.isRequest())
stream.updateClose(headersFrame.isEndStream(), CloseState.Event.BEFORE_SEND); break;
@Override public int generate(ByteBufferPool.Lease lease, Frame frame) { HeadersFrame headersFrame = (HeadersFrame)frame; return generateHeaders(lease, headersFrame.getStreamId(), headersFrame.getMetaData(), headersFrame.getPriority(), headersFrame.isEndStream()); }
private boolean onHeaders() { ByteBuffer headerBlock = headerBlockFragments.complete(); MetaData metaData = headerBlockParser.parse(headerBlock, headerBlock.remaining()); if (metaData == HeaderBlockParser.SESSION_FAILURE) return false; if (metaData == null || metaData == HeaderBlockParser.STREAM_FAILURE) return true; HeadersFrame frame = new HeadersFrame(getStreamId(), metaData, headerBlockFragments.getPriorityFrame(), headerBlockFragments.isEndStream()); notifyHeaders(frame); return true; }
MetaData metaData = frame.getMetaData(); if (metaData.isResponse()) MetaData.Response response = (MetaData.Response)frame.getMetaData(); httpResponse.version(response.getHttpVersion()).status(response.getStatus()).reason(response.getReason()); if (frame.isEndStream() || informational) responseSuccess(exchange);
stream.updateClose(headersFrame.isEndStream(), CloseState.Event.BEFORE_SEND); break;
// Setup and start the HTTP2Client. HTTP2Client client = new HTTP2Client(); SslContextFactory sslContextFactory = new SslContextFactory(); client.addBean(sslContextFactory); client.start(); // Connect to the remote host to obtains a Session. FuturePromise<Session> sessionPromise = new FuturePromise<>(); client.connect(sslContextFactory, new InetSocketAddress(host, port), new ServerSessionListener.Adapter(), sessionPromise); Session session = sessionPromise.get(5, TimeUnit.SECONDS); // Use the session to make requests. HttpFields requestFields = new HttpFields(); requestFields.put("User-Agent", client.getClass().getName() + "/" + Jetty.VERSION); MetaData.Request metaData = new MetaData.Request("GET", new HttpURI("https://webtide.com/"), HttpVersion.HTTP_2, requestFields); HeadersFrame headersFrame = new HeadersFrame(metaData, null, true); session.newStream(headersFrame, new Promise.Adapter<>(), new Stream.Listener.Adapter() { @Override public void onHeaders(Stream stream, HeadersFrame frame) { // Response headers. System.err.println(frame); } @Override public void onData(Stream stream, DataFrame frame, Callback callback) { // Response content. System.err.println(frame); callback.succeeded(); } });
MetaData.Request request = (MetaData.Request)frame.getMetaData(); HttpFields fields = request.getFields(); boolean endStream = frame.isEndStream(); if (endStream)
if (stream.updateClose(headersFrame.isEndStream(), CloseState.Event.AFTER_SEND)) removeStream(stream); break;
synchronized (this) int streamId = frame.getStreamId(); if (streamId <= 0) PriorityFrame priority = frame.getPriority(); priority = priority == null ? null : new PriorityFrame(streamId, priority.getParentStreamId(), priority.getWeight(), priority.isExclusive()); frame = new HeadersFrame(streamId, frame.getMetaData(), priority, frame.isEndStream());
private boolean onHeaders() { ByteBuffer headerBlock = headerBlockFragments.complete(); MetaData metaData = headerBlockParser.parse(headerBlock, headerBlock.remaining()); if (metaData == HeaderBlockParser.SESSION_FAILURE) return false; if (metaData == null || metaData == HeaderBlockParser.STREAM_FAILURE) return true; HeadersFrame frame = new HeadersFrame(getStreamId(), metaData, headerBlockFragments.getPriorityFrame(), headerBlockFragments.isEndStream()); notifyHeaders(frame); return true; }