@Test public void testPumpBasic() throws Exception { FakeReadStream<MyClass> rs = new FakeReadStream<>(); FakeWriteStream<MyClass> ws = new FakeWriteStream<>(); Pump p = Pump.pump(rs, ws, 1001); for (int i = 0; i < 10; i++) { // Repeat a few times p.start(); List<MyClass> inp = new ArrayList<>(); for (int j = 0; j < 10; j++) { MyClass myClass = new MyClass(); inp.add(myClass); rs.addData(myClass); } assertEquals(inp, ws.received); assertFalse(rs.paused); assertEquals(0, rs.pauseCount); assertEquals(0, rs.resumeCount); p.stop(); ws.clearReceived(); MyClass myClass = new MyClass(); rs.addData(myClass); assertEquals(0, ws.received.size()); } }
/** * Stop the Pump. The Pump can be started and stopped multiple times. * @return a reference to this, so the API can be used fluently */ public io.vertx.rxjava.core.streams.Pump stop() { delegate.stop(); return this; }
/** * Stop the Pump. The Pump can be started and stopped multiple times. * @return a reference to this, so the API can be used fluently */ public io.vertx.rxjava.core.streams.Pump stop() { delegate.stop(); return this; }
/** * Stop the proxy request * * @return the front request if stopped / {@code null} means nothing happened */ private HttpServerRequest stop() { HttpServerRequest request = frontRequest; if (request != null) { // Abrupt close frontRequest = null; if (requestPump != null) { requestPump.stop(); requestPump = null; } if (responsePump != null) { responsePump.stop(); responsePump = null; } return request; } return null; }
@Test public void testPumpBasic() throws Exception { FakeReadStream<MyClass> rs = new FakeReadStream<>(); FakeWriteStream<MyClass> ws = new FakeWriteStream<>(); Pump p = Pump.pump(rs, ws, 1001); for (int i = 0; i < 10; i++) { // Repeat a few times p.start(); List<MyClass> inp = new ArrayList<>(); for (int j = 0; j < 10; j++) { MyClass myClass = new MyClass(); inp.add(myClass); rs.addData(myClass); } assertEquals(inp, ws.received); assertFalse(rs.paused); assertEquals(0, rs.pauseCount); assertEquals(0, rs.resumeCount); p.stop(); ws.clearReceived(); MyClass myClass = new MyClass(); rs.addData(myClass); assertEquals(0, ws.received.size()); } }
public void stop() { // from remote tcp to local bus fromRemoteTcpToLocalBus.stop(); // from local bus to remote tcp netSocketWrapper.stop();// stop write to remote tcp socket consumer.handler(null);// stop read from bus }
public <T extends E> void publish(Class<T> clazz, Publisher<T> publisher) { requireNonNull(clazz); requireNonNull(publisher); ReactiveReadStream<Object> rrs = ReactiveReadStream.readStream(); Flux.from(publisher) .map(Json::encode) .subscribe(rrs); MessageProducer<Object> messageProducer = vertx.eventBus().publisher(clazz.getName()); Pump pump = Pump.pump(rrs, messageProducer); pump.start(); rrs.endHandler(event -> { pump.stop(); }); }
public <T extends E> void subscribe(Class<T> clazz, Subscriber<T> subscriber) { requireNonNull(clazz); requireNonNull(subscriber); final MessageConsumer<String> consumer = vertx.eventBus().consumer(clazz.getName()); ReactiveWriteStream<String> rws = ReactiveWriteStream.writeStream(vertx); Pump pump = Pump.pump(consumer.bodyStream(), rws); Flux.from(rws) .doOnSubscribe(subscription -> { pump.start(); }) .doOnComplete(() -> { pump.stop(); rws.close(); }) .map(json -> Json.decodeValue(json, clazz)) .subscribe(subscriber); } }
pump.stop(); cRes.handler(buf -> {