List of usage examples for io.netty.handler.codec.http2 Http2ConnectionEncoder frameWriter
Http2FrameWriter frameWriter();
From source file:io.grpc.netty.FixedHttp2ConnectionDecoder.java
License:Apache License
public FixedHttp2ConnectionDecoder(Http2Connection connection, Http2ConnectionEncoder encoder, Http2FrameReader frameReader, Http2PromisedRequestVerifier requestVerifier) { this.connection = checkNotNull(connection, "connection"); this.frameReader = checkNotNull(frameReader, "frameReader"); this.encoder = checkNotNull(encoder, "encoder"); this.requestVerifier = checkNotNull(requestVerifier, "requestVerifier"); if (connection.local().flowController() == null) { connection.local().flowController(new DefaultHttp2LocalFlowController(connection)); }/*from w w w. ja v a 2s . c o m*/ connection.local().flowController().frameWriter(encoder.frameWriter()); }
From source file:io.vertx.core.http.Http2ServerTest.java
License:Open Source License
@Test public void testPromiseStreamError() throws Exception { Context ctx = vertx.getOrCreateContext(); waitFor(2);//from w w w . ja v a 2s. c o m Future<Void> when = Future.future(); server.requestHandler(req -> { req.response().push(HttpMethod.GET, "/wibble", ar -> { assertTrue(ar.succeeded()); assertOnIOContext(ctx); when.complete(); HttpServerResponse resp = ar.result(); AtomicInteger erros = new AtomicInteger(); resp.exceptionHandler(err -> { assertOnIOContext(ctx); erros.incrementAndGet(); }); resp.closeHandler(v -> { assertOnIOContext(ctx); assertTrue("Was expecting errors to be > 0", erros.get() > 0); complete(); }); resp.endHandler(v -> { assertOnIOContext(ctx); complete(); }); resp.setChunked(true).write("whatever"); // Transition to half-closed remote }); }); startServer(ctx); TestClient client = new TestClient(); ChannelFuture fut = client.connect(DEFAULT_HTTPS_PORT, DEFAULT_HTTPS_HOST, request -> { request.decoder.frameListener(new Http2EventAdapter() { @Override public void onPushPromiseRead(ChannelHandlerContext ctx, int streamId, int promisedStreamId, Http2Headers headers, int padding) throws Http2Exception { when.setHandler(ar -> { Http2ConnectionEncoder encoder = request.encoder; encoder.frameWriter().writeHeaders(request.context, promisedStreamId, GET("/"), 0, false, request.context.newPromise()); request.context.flush(); }); } }); int id = request.nextStreamId(); Http2ConnectionEncoder encoder = request.encoder; encoder.writeHeaders(request.context, id, GET("/"), 0, false, request.context.newPromise()); request.context.flush(); }); fut.sync(); await(); }
From source file:io.vertx.core.http.Http2ServerTest.java
License:Open Source License
@Test public void testConnectionDecodeError() throws Exception { Context ctx = vertx.getOrCreateContext(); waitFor(3);/* ww w . j a v a 2s. c o m*/ Future<Void> when = Future.future(); server.requestHandler(req -> { AtomicInteger reqFailures = new AtomicInteger(); AtomicInteger respFailures = new AtomicInteger(); req.exceptionHandler(err -> { assertOnIOContext(ctx); reqFailures.incrementAndGet(); }); req.response().exceptionHandler(err -> { assertOnIOContext(ctx); respFailures.incrementAndGet(); }); req.response().closeHandler(v -> { assertOnIOContext(ctx); complete(); }); req.response().endHandler(v -> { assertOnIOContext(ctx); assertTrue(reqFailures.get() > 0); assertTrue(respFailures.get() > 0); complete(); }); HttpConnection conn = req.connection(); AtomicInteger connFailures = new AtomicInteger(); conn.exceptionHandler(err -> { assertOnIOContext(ctx); connFailures.incrementAndGet(); }); conn.closeHandler(v -> { assertTrue(connFailures.get() > 0); assertOnIOContext(ctx); complete(); }); when.complete(); }); startServer(ctx); TestClient client = new TestClient(); ChannelFuture fut = client.connect(DEFAULT_HTTPS_PORT, DEFAULT_HTTPS_HOST, request -> { int id = request.nextStreamId(); Http2ConnectionEncoder encoder = request.encoder; when.setHandler(ar -> { // Send a stream ID that does not exists encoder.frameWriter().writeRstStream(request.context, 10, 0, request.context.newPromise()); request.context.flush(); }); encoder.writeHeaders(request.context, id, GET("/"), 0, false, request.context.newPromise()); request.context.flush(); }); fut.sync(); await(); }
From source file:io.vertx.test.core.Http2ServerTest.java
License:Open Source License
@Test public void testPromiseStreamError() throws Exception { Context ctx = vertx.getOrCreateContext(); waitFor(3);// w w w .j ava 2 s . c o m Future<Void> when = Future.future(); server.requestHandler(req -> { req.response().push(HttpMethod.GET, "/wibble", ar -> { assertTrue(ar.succeeded()); assertOnIOContext(ctx); when.complete(); HttpServerResponse resp = ar.result(); resp.exceptionHandler(err -> { assertSame(ctx, Vertx.currentContext()); complete(); }); resp.closeHandler(v -> { assertSame(ctx, Vertx.currentContext()); complete(); }); resp.endHandler(v -> { assertSame(ctx, Vertx.currentContext()); complete(); }); resp.setChunked(true).write("whatever"); // Transition to half-closed remote }); }); startServer(ctx); TestClient client = new TestClient(); ChannelFuture fut = client.connect(DEFAULT_HTTPS_PORT, DEFAULT_HTTPS_HOST, request -> { request.decoder.frameListener(new Http2EventAdapter() { @Override public void onPushPromiseRead(ChannelHandlerContext ctx, int streamId, int promisedStreamId, Http2Headers headers, int padding) throws Http2Exception { when.setHandler(ar -> { Http2ConnectionEncoder encoder = request.encoder; encoder.frameWriter().writeHeaders(request.context, promisedStreamId, GET("/"), 0, false, request.context.newPromise()); request.context.flush(); }); } }); int id = request.nextStreamId(); Http2ConnectionEncoder encoder = request.encoder; encoder.writeHeaders(request.context, id, GET("/"), 0, false, request.context.newPromise()); request.context.flush(); }); fut.sync(); await(); }
From source file:io.vertx.test.core.Http2ServerTest.java
License:Open Source License
@Test public void testConnectionDecodeError() throws Exception { Context ctx = vertx.getOrCreateContext(); waitFor(6);// www. j a va 2s . c o m Future<Void> when = Future.future(); server.requestHandler(req -> { req.exceptionHandler(err -> { // Called twice : reset + close assertSame(ctx, Vertx.currentContext()); complete(); }); req.response().exceptionHandler(err -> { // Called once : reset assertSame(ctx, Vertx.currentContext()); complete(); }); req.response().closeHandler(v -> { // Called once : close assertSame(ctx, Vertx.currentContext()); complete(); }); req.response().endHandler(v -> { // Called once : close assertSame(ctx, Vertx.currentContext()); complete(); }); req.connection().exceptionHandler(err -> { assertSame(ctx, Vertx.currentContext()); complete(); }); when.complete(); }); startServer(ctx); TestClient client = new TestClient(); ChannelFuture fut = client.connect(DEFAULT_HTTPS_PORT, DEFAULT_HTTPS_HOST, request -> { int id = request.nextStreamId(); Http2ConnectionEncoder encoder = request.encoder; when.setHandler(ar -> { encoder.frameWriter().writeRstStream(request.context, 10, 0, request.context.newPromise()); request.context.flush(); }); encoder.writeHeaders(request.context, id, GET("/"), 0, false, request.context.newPromise()); request.context.flush(); }); fut.sync(); await(); }