@Override public ReadStream<T> resume() { delegate.resume(); return this; }
stream.resume();
PumpImpl(ReadStream<T> rs, WriteStream<T> ws) { this.readStream = rs; this.writeStream = ws; drainHandler = v-> readStream.resume(); dataHandler = data -> { writeStream.write(data); incPumped(); if (writeStream.writeQueueFull()) { readStream.pause(); writeStream.drainHandler(drainHandler); } }; }
@Override Future<Void> handle(ReadStream<Buffer> stream) { Future<Void> fut = Future.future(); assert flowing.getAndSet(false); stream.pause(); Vertx.currentContext().owner().setTimer(1, id -> { assert !flowing.getAndSet(true); stream.resume(); fut.complete(); }); return fut; } },
ReadStream<Buffer> s = stream; if (s != null) { s.resume();
private void testExceptionWhenDeliveringBufferedMessage(BiFunction<MessageConsumer<String>, Handler<String>, ReadStream<?>> register) { String[] data = new String[11]; for (int i = 0;i < data.length;i++) { data[i] = TestUtils.randomAlphaString(10); } Set<String> expected = new HashSet<>(); Handler<String> handler = body -> { assertTrue("Was expecting " + expected + " to contain " + body, expected.remove(body)); if (expected.isEmpty()) { testComplete(); } else { throw new RuntimeException(); } }; MessageConsumer<String> reg = eb.<String>consumer(ADDRESS1).setMaxBufferedMessages(10); ReadStream<?> controller = register.apply(reg, handler); ((HandlerRegistration<String>) reg).discardHandler(msg -> { assertEquals(data[10], msg.body()); expected.addAll(Arrays.asList(data).subList(0, 10)); controller.resume(); }); controller.pause(); for (String msg : data) { eb.publish(ADDRESS1, msg); } await(); }
private void testPauseResume(BiFunction<MessageConsumer<String>, Handler<String>, ReadStream<?>> register) { String[] data = new String[11]; for (int i = 0;i < data.length;i++) { data[i] = TestUtils.randomAlphaString(10); } Set<String> expected = new HashSet<>(); Handler<String> handler = body -> { assertTrue("Was expecting " + expected + " to contain " + body, expected.remove(body)); if (expected.isEmpty()) { testComplete(); } }; MessageConsumer<String> reg = eb.<String>consumer(ADDRESS1).setMaxBufferedMessages(10); ReadStream<?> controller = register.apply(reg, handler); ((HandlerRegistration<String>) reg).discardHandler(msg -> { assertEquals(data[10], msg.body()); expected.addAll(Arrays.asList(data).subList(0, 10)); controller.resume(); }); controller.pause(); for (String msg : data) { eb.publish(ADDRESS1, msg); } await(); }
@Test public void testPeriodicPauseResume() throws Exception { ReadStream<Long> timer = vertx.periodicStream(200); AtomicInteger count = new AtomicInteger(); timer.handler(id -> { int cnt = count.incrementAndGet(); if (cnt == 2) { timer.pause(); vertx.setTimer(500, id2 -> { assertEquals(2, count.get()); timer.resume(); }); } else if (cnt == 3) { testComplete(); } }); await(); }
@Test public void testTimerPauseResume() throws Exception { ReadStream<Long> timer = vertx.timerStream(10); timer.handler(l -> testComplete()); timer.pause(); timer.resume(); await(); }
@Override public ReadStream<T> resume() { delegate.resume(); return this; }
stream.resume(); client.websocket(DEFAULT_HTTP_PORT, HttpTestBase.DEFAULT_HTTP_HOST, "/some/path", ws -> { ws.handler(buffer -> {
so2.closeHandler(v -> { paused.set(false); socketStream.resume(); client.connect(testAddress, ar3 -> { assertTrue(ar3.succeeded());
assertEquals(0, buffer.length()); paused.set(false); httpStream.resume(); client = vertx.createHttpClient(new HttpClientOptions()); client.request(HttpMethod.GET, HttpTestBase.DEFAULT_HTTP_PORT, "localhost", path, onSuccess(resp -> {
public <T> CompletableFuture<T> saveAs(Function<Buffer, T> converter) { CompletableFuture<T> future = new CompletableFuture<>(); Buffer buffer = Buffer.buffer(); // if readStream.resume() not run on correct eventloop, will: // 1.create a context task to save last chunk data to buffer // 2.activate connection to read new data // but maybe 2 will run before 1, that will cause lost data or get incorrect data context.runOnContext(V -> { readStream.exceptionHandler(future::completeExceptionally); readStream.handler(buffer::appendBuffer); readStream.endHandler(v -> future.complete(converter.apply(buffer))); readStream.resume(); }); return future; }
PumpImpl(ReadStream<T> rs, WriteStream<T> ws) { this.readStream = rs; this.writeStream = ws; drainHandler = v-> readStream.resume(); dataHandler = data -> { writeStream.write(data); incPumped(); if (writeStream.writeQueueFull()) { readStream.pause(); writeStream.drainHandler(drainHandler); } }; }
@Override Future<Void> handle(ReadStream<Buffer> stream) { Future<Void> fut = Future.future(); assert flowing.getAndSet(false); stream.pause(); Vertx.currentContext().owner().setTimer(1, id -> { assert !flowing.getAndSet(true); stream.resume(); fut.complete(); }); return fut; } },
public PumpImplEx(ReadStream<T> readStream, WriteStream<T> writeStream) { this.readStream = readStream; this.writeStream = writeStream; drainHandler = v -> readStream.resume(); dataHandler = data -> { if (data instanceof Buffer) { if (((Buffer) data).length() == 0) { return; } } writeStream.write(data); incPumped(); if (writeStream.writeQueueFull()) { readStream.pause(); writeStream.drainHandler(drainHandler); } }; }
private void testPauseResume(BiFunction<MessageConsumer<String>, Handler<String>, ReadStream<?>> register) { String[] data = new String[11]; for (int i = 0;i < data.length;i++) { data[i] = TestUtils.randomAlphaString(10); } Set<String> expected = new HashSet<>(); Handler<String> handler = body -> { assertTrue("Was expecting " + expected + " to contain " + body, expected.remove(body)); if (expected.isEmpty()) { testComplete(); } }; MessageConsumer<String> reg = eb.<String>consumer(ADDRESS1).setMaxBufferedMessages(10); ReadStream<?> controller = register.apply(reg, handler); ((HandlerRegistration<String>) reg).discardHandler(msg -> { assertEquals(data[10], msg.body()); expected.addAll(Arrays.asList(data).subList(0, 10)); controller.resume(); }); controller.pause(); for (String msg : data) { eb.publish(ADDRESS1, msg); } await(); }
@Test public void testPeriodicPauseResume() throws Exception { ReadStream<Long> timer = vertx.periodicStream(200); AtomicInteger count = new AtomicInteger(); timer.handler(id -> { int cnt = count.incrementAndGet(); if (cnt == 2) { timer.pause(); vertx.setTimer(500, id2 -> { assertEquals(2, count.get()); timer.resume(); }); } else if (cnt == 3) { testComplete(); } }); await(); }
@Test public void testTimerPauseResume() throws Exception { ReadStream<Long> timer = vertx.timerStream(10); timer.handler(l -> testComplete()); timer.pause(); timer.resume(); await(); }