static ReactiveSeq<Integer> interval(String cron,ScheduledExecutorService exec) { ReactiveSubscriber<Integer> sub = reactiveSubscriber(); AtomicBoolean isOpen = new AtomicBoolean(true); Subscription[] s= {null}; sub.onSubscribe(new Subscription() { @Override public void request(long n) { s[0].request(n); } @Override public void cancel() { isOpen.set(false); } }); s[0] = ReactiveSeq.iterate(1, a -> a + 1) .takeWhile(e -> isOpen.get()) .schedule(cron, exec) .connect() .forEach(1, e -> sub.onNext(e)); return sub.reactiveStream(); } static ReactiveSeq<Integer> interval(final long millis,ScheduledExecutorService exec) {
static ReactiveSeq<Integer> interval(final long millis,ScheduledExecutorService exec) { ReactiveSubscriber<Integer> sub = reactiveSubscriber(); AtomicBoolean isOpen = new AtomicBoolean(true); Subscription[] s= {null}; sub.onSubscribe(new Subscription() { @Override public void request(long n) { s[0].request(n); } @Override public void cancel() { isOpen.set(false); } }); s[0] = ReactiveSeq.iterate(1, a -> a + 1) .takeWhile(e -> isOpen.get()) .scheduleFixedDelay(millis, exec) .connect() .forEach(1, e -> sub.onNext(e)); return sub.reactiveStream(); } static <T> ReactiveSeq<T> schedule(final Stream<T> stream,final String cron,final ScheduledExecutorService exec) {
private ReactiveSeq<Integer> nextAsyncRS() { ReactiveSubscriber<Integer> sub = Spouts.reactiveSubscriber(); AtomicLong req = new AtomicLong(0); int id = start.incrementAndGet(); sub.onSubscribe(new Subscription() { @Override public void request(long n) { req.addAndGet(n); } @Override public void cancel() { } public String toString(){ return "subscription " + id; } }); new Thread(()->{ int sent=0; while(sent<2){ if(req.get()>0){ sub.onNext( ++sent); req.decrementAndGet(); } } sub.onComplete(); // Flux.just(1,2).forEachAsync(sub); }).start(); return sub.reactiveStream(); } private ReactiveSeq<Integer> nextAsync() {
private ReactiveSeq<Integer> nextAsyncRS() { ReactiveSubscriber<Integer> sub = Spouts.reactiveSubscriber(); AtomicLong req = new AtomicLong(0); int id = start.incrementAndGet(); sub.onSubscribe(new Subscription() { @Override public void request(long n) { req.addAndGet(n); } @Override public void cancel() { } public String toString(){ return "subscription " + id; } }); new Thread(()->{ int sent=0; while(sent<2){ if(req.get()>0){ sub.onNext( ++sent); req.decrementAndGet(); } } sub.onComplete(); // Flux.just(1,2).forEachAsync(sub); }).start(); return sub.reactiveStream(); } private ReactiveSeq<Integer> nextAsync() {
private Stream<Integer> nextAsyncRS() { ReactiveSubscriber<Integer> sub = Spouts.reactiveSubscriber(); AtomicLong req = new AtomicLong(0); int id = start.incrementAndGet(); sub.onSubscribe(new Subscription() { @Override public void request(long n) { req.addAndGet(n); } @Override public void cancel() { } public String toString(){ return "subscription " + id; } }); new Thread(()->{ int sent=0; while(sent<2){ if(req.get()>0){ sub.onNext( ++sent); req.decrementAndGet(); } } sub.onComplete(); // Flux.just(1,2).forEachAsync(sub); }).start(); return sub.reactiveStream(); } private Stream<Integer> nextAsync() {
private Stream<Integer> nextAsyncRS() { ReactiveSubscriber<Integer> sub = Spouts.reactiveSubscriber(); AtomicLong req = new AtomicLong(0); int id = start.incrementAndGet(); sub.onSubscribe(new Subscription() { @Override public void request(long n) { req.addAndGet(n); } @Override public void cancel() { } public String toString(){ return "subscription " + id; } }); new Thread(()->{ int sent=0; while(sent<2){ if(req.get()>0){ sub.onNext( ++sent); req.decrementAndGet(); } } sub.onComplete(); // Flux.just(1,2).forEachAsync(sub); }).start(); return sub.reactiveStream(); } private Stream<Integer> nextAsync() {
static <T> ReactiveSeq<T> schedule(final Stream<T> stream,final String cron,final ScheduledExecutorService exec) { ReactiveSubscriber<T> sub = reactiveSubscriber(); AtomicBoolean isOpen = new AtomicBoolean(true); Subscription[] s= {null}; sub.onSubscribe(new Subscription() { @Override public void request(long n) { s[0].request(n); } @Override public void cancel() { isOpen.set(false); } }); s[0] = ReactiveSeq.fromStream(stream) .takeWhile(e -> isOpen.get()) .schedule(cron, exec) .connect() .forEach(0, e -> sub.onNext(e),t->sub.onError(t),()->sub.onComplete()); return sub.reactiveStream(); }
private ReactiveSeq<Integer> nextAsyncRS() { ReactiveSubscriber<Integer> sub = Spouts.reactiveSubscriber(); AtomicLong req = new AtomicLong(0); int id = start.incrementAndGet(); sub.onSubscribe(new Subscription() { @Override public void request(long n) { req.addAndGet(n); } @Override public void cancel() { } public String toString(){ return "subscription " + id; } }); new Thread(()->{ int sent=0; while(sent<2){ if(req.get()>0){ sub.onNext( ++sent); req.decrementAndGet(); } } sub.onComplete(); // Flux.just(1,2).forEachAsync(sub); }).start(); return sub.reactiveStream(); } private ReactiveSeq<Integer> nextAsync() {
static ReactiveSeq<Integer> interval(String cron,ScheduledExecutorService exec) { ReactiveSubscriber<Integer> sub = reactiveSubscriber(); AtomicBoolean isOpen = new AtomicBoolean(true); Subscription[] s= {null}; sub.onSubscribe(new Subscription() { @Override public void request(long n) { s[0].request(n); } @Override public void cancel() { isOpen.set(false); } }); s[0] = ReactiveSeq.iterate(1, a -> a + 1) .takeWhile(e -> isOpen.get()) .schedule(cron, exec) .connect() .forEach(1, e -> sub.onNext(e)); return sub.reactiveStream(); } static ReactiveSeq<Integer> interval(final long millis,ScheduledExecutorService exec) {
static ReactiveSeq<Integer> interval(final long millis,ScheduledExecutorService exec) { ReactiveSubscriber<Integer> sub = reactiveSubscriber(); AtomicBoolean isOpen = new AtomicBoolean(true); Subscription[] s= {null}; sub.onSubscribe(new Subscription() { @Override public void request(long n) { s[0].request(n); } @Override public void cancel() { isOpen.set(false); } }); s[0] = ReactiveSeq.iterate(1, a -> a + 1) .takeWhile(e -> isOpen.get()) .scheduleFixedDelay(millis, exec) .connect() .forEach(1, e -> sub.onNext(e)); return sub.reactiveStream(); } static <T> ReactiveSeq<T> schedule(final Stream<T> stream,final String cron,final ScheduledExecutorService exec) {
static <T> ReactiveSeq<T> schedule(final Stream<T> stream,final String cron,final ScheduledExecutorService exec) { ReactiveSubscriber<T> sub = reactiveSubscriber(); AtomicBoolean isOpen = new AtomicBoolean(true); Subscription[] s= {null}; sub.onSubscribe(new Subscription() { @Override public void request(long n) { s[0].request(n); } @Override public void cancel() { isOpen.set(false); } }); s[0] = ReactiveSeq.fromStream(stream) .takeWhile(e -> isOpen.get()) .schedule(cron, exec) .connect() .forEach(0, e -> sub.onNext(e),t->sub.onError(t),()->sub.onComplete()); return sub.reactiveStream(); }