List of usage examples for io.netty.handler.codec.http2 DefaultHttp2Headers status
@Override
public Http2Headers status(CharSequence value)
From source file:io.vertx.core.http.Http2ClientTest.java
License:Open Source License
private ServerBootstrap createH2CServer( BiFunction<Http2ConnectionDecoder, Http2ConnectionEncoder, Http2FrameListener> handler, boolean upgrade) { ServerBootstrap bootstrap = new ServerBootstrap(); bootstrap.channel(NioServerSocketChannel.class); bootstrap.group(new NioEventLoopGroup()); bootstrap.childHandler(new ChannelInitializer<Channel>() { @Override// w w w. j av a 2 s . c o m protected void initChannel(Channel ch) throws Exception { if (upgrade) { HttpServerCodec sourceCodec = new HttpServerCodec(); HttpServerUpgradeHandler.UpgradeCodecFactory upgradeCodecFactory = protocol -> { if (AsciiString.contentEquals(Http2CodecUtil.HTTP_UPGRADE_PROTOCOL_NAME, protocol)) { Http2ConnectionHandler httpConnectionHandler = createHttpConnectionHandler((a, b) -> { return new Http2FrameListenerDecorator(handler.apply(a, b)) { @Override public void onSettingsRead(ChannelHandlerContext ctx, io.netty.handler.codec.http2.Http2Settings settings) throws Http2Exception { super.onSettingsRead(ctx, settings); Http2Connection conn = a.connection(); Http2Stream stream = conn.stream(1); DefaultHttp2Headers blah = new DefaultHttp2Headers(); blah.status("200"); b.frameWriter().writeHeaders(ctx, 1, blah, 0, true, ctx.voidPromise()); } }; }); return new Http2ServerUpgradeCodec(httpConnectionHandler); } else { return null; } }; ch.pipeline().addLast(sourceCodec); ch.pipeline().addLast(new HttpServerUpgradeHandler(sourceCodec, upgradeCodecFactory)); } else { Http2ConnectionHandler clientHandler = createHttpConnectionHandler(handler); ch.pipeline().addLast("handler", clientHandler); } } }); return bootstrap; }
From source file:org.glassfish.jersey.netty.httpserver.NettyHttp2ResponseWriter.java
License:Open Source License
@Override public OutputStream writeResponseStatusAndHeaders(long contentLength, ContainerResponse responseContext) throws ContainerException { String reasonPhrase = responseContext.getStatusInfo().getReasonPhrase(); int statusCode = responseContext.getStatus(); HttpResponseStatus status = reasonPhrase == null ? HttpResponseStatus.valueOf(statusCode) : new HttpResponseStatus(statusCode, reasonPhrase); DefaultHttp2Headers response = new DefaultHttp2Headers(); response.status(Integer.toString(responseContext.getStatus())); for (final Map.Entry<String, List<String>> e : responseContext.getStringHeaders().entrySet()) { response.add(e.getKey().toLowerCase(), e.getValue()); }//from ww w . j a va 2 s . co m response.set(HttpHeaderNames.CONTENT_LENGTH, Long.toString(contentLength)); ctx.writeAndFlush(new DefaultHttp2HeadersFrame(response)); if (!headersFrame.headers().method().equals(HttpMethod.HEAD.asciiName()) && (contentLength > 0 || contentLength == -1)) { return new OutputStream() { @Override public void write(int b) throws IOException { write(new byte[] { (byte) b }); } @Override public void write(byte[] b) throws IOException { write(b, 0, b.length); } @Override public void write(byte[] b, int off, int len) throws IOException { ByteBuf buffer = ctx.alloc().buffer(len); buffer.writeBytes(b, off, len); ctx.writeAndFlush(new DefaultHttp2DataFrame(buffer, false)); } @Override public void flush() throws IOException { ctx.flush(); } @Override public void close() throws IOException { ctx.write(new DefaultHttp2DataFrame(true)).addListener(NettyResponseWriter.FLUSH_FUTURE); } }; } else { ctx.writeAndFlush(new DefaultHttp2DataFrame(true)); return null; } }