private void _writePushPromise(int streamId, int promisedStreamId, Http2Headers headers, ChannelPromise promise) { encoder().writePushPromise(chctx, streamId, promisedStreamId, headers, 0, promise); }
private void writePushPromiseFrame(ChannelHandlerContext ctx, Http2PushPromiseFrame pushPromiseFrame, ChannelPromise promise) { if (isStreamIdValid(pushPromiseFrame.stream().id())) { encoder().writePushPromise(ctx, pushPromiseFrame.stream().id(), pushPromiseFrame.promisedStreamId(), pushPromiseFrame.headers(), pushPromiseFrame.padding(), promise); } else { // TODO promise.setFailure(new IllegalArgumentException("Push promise stream id invalid!")); } }
@Override public void push(final String method, final String path, final Map<String, Object> headers) { ctx.channel().eventLoop().execute(() -> { AsciiString streamIdHeader = HttpConversionUtil.ExtensionHeaderNames.STREAM_ID.text(); Http2Connection connection = encoder.connection(); int nextStreamId = connection.local().incrementAndGetNextStreamId(); Http2Headers h2headers = new DefaultHttp2Headers() .path(path) .method(method) .authority(authority) .scheme(scheme); headers.forEach((n, v) -> h2headers.add(n, v.toString())); encoder.writePushPromise(ctx, streamId, nextStreamId, h2headers, 0, ctx.newPromise()); // TODO: Is there another way of handling a push promise? DefaultFullHttpRequest pushRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.valueOf(method.toUpperCase()), path, Unpooled.EMPTY_BUFFER, new DefaultHttpHeaders(false).set(streamIdHeader, nextStreamId), EmptyHttpHeaders.INSTANCE); ctx.pipeline().fireChannelRead(pushRequest); ctx.pipeline().fireChannelReadComplete(); }); }
private void writePushPromiseFrame(ChannelHandlerContext ctx, Http2PushPromiseFrame pushPromiseFrame, ChannelPromise promise) { if (isStreamIdValid(pushPromiseFrame.stream().id())) { encoder().writePushPromise(ctx, pushPromiseFrame.stream().id(), pushPromiseFrame.promisedStreamId(), pushPromiseFrame.headers(), pushPromiseFrame.padding(), promise); } else { // TODO promise.setFailure(new IllegalArgumentException("Push promise stream id invalid!")); } }
private void _writePushPromise(int streamId, int promisedStreamId, Http2Headers headers, ChannelPromise promise) { encoder().writePushPromise(chctx, streamId, promisedStreamId, headers, 0, promise); }
private void writePushPromiseFrame(ChannelHandlerContext ctx, Http2PushPromiseFrame pushPromiseFrame, ChannelPromise promise) { if (isStreamIdValid(pushPromiseFrame.stream().id())) { encoder().writePushPromise(ctx, pushPromiseFrame.stream().id(), pushPromiseFrame.promisedStreamId(), pushPromiseFrame.headers(), pushPromiseFrame.padding(), promise); } else { // TODO promise.setFailure(new IllegalArgumentException("Push promise stream id invalid!")); } }
@Override public void push(final String method, final String path, final Map<String, Object> headers) { ctx.channel().eventLoop().execute(() -> { AsciiString streamIdHeader = HttpConversionUtil.ExtensionHeaderNames.STREAM_ID.text(); Http2Connection connection = encoder.connection(); int nextStreamId = connection.local().incrementAndGetNextStreamId(); Http2Headers h2headers = new DefaultHttp2Headers() .path(path) .method(method) .authority(authority) .scheme(scheme); headers.forEach((n, v) -> h2headers.add(n, v.toString())); encoder.writePushPromise(ctx, streamId, nextStreamId, h2headers, 0, ctx.newPromise()); // TODO: Is there another way of handling a push promise? DefaultFullHttpRequest pushRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.valueOf(method.toUpperCase()), path, Unpooled.EMPTY_BUFFER, new DefaultHttpHeaders(false).set(streamIdHeader, nextStreamId), EmptyHttpHeaders.INSTANCE); ctx.pipeline().fireChannelRead(pushRequest); ctx.pipeline().fireChannelReadComplete(); }); }
HttpConversionUtil.toHttp2Headers(httpRequest, true); ChannelFuture channelFuture = encoder.writePushPromise( ctx, originalStreamId, promisedStreamId, http2Headers, 0, ctx.newPromise()); encoder.flowController().writePendingBytes();
private void sendAPushPromise(ChannelHandlerContext ctx, int streamId, int pushPromiseStreamId, ByteBuf payload) throws Http2Exception { encoder().writePushPromise(ctx, streamId, pushPromiseStreamId, new DefaultHttp2Headers().status(OK.codeAsText()), 0, ctx.newPromise()); //Http2Stream stream = connection.local().reservePushStream(pushPromiseStreamId, connection.connectionStream()); Http2Headers headers = new DefaultHttp2Headers(); headers.status(OK.codeAsText()); encoder().writeHeaders(ctx, pushPromiseStreamId, headers, 0, false, ctx.newPromise()); encoder().writeData(ctx, pushPromiseStreamId, payload, 0, false, ctx.newPromise()); }