
com.aol.micro.server.reactive.CyclopsReactor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of micro-reactive Show documentation
Show all versions of micro-reactive Show documentation
Opinionated rest microservices
package com.aol.micro.server.reactive;
import org.reactivestreams.Publisher;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import com.aol.cyclops.control.AnyM;
import com.aol.cyclops.control.FutureW;
import com.aol.cyclops.control.LazyReact;
import com.aol.cyclops.control.ReactiveSeq;
import com.aol.cyclops.types.anyM.AnyMSeq;
import com.aol.cyclops.types.futurestream.LazyFutureStream;
import com.aol.cyclops.types.stream.reactive.SeqSubscriber;
import com.aol.cyclops.types.stream.reactive.ValueSubscriber;
/**
* Type conversion tier for cyclops-react and Reactor.
* Note both cyclops-react and Reactor data types can generally be constructed from another
* reactive-streams publisher.
* e.g.
*
* {@code
* ListX.fromPublisher(Flux.just(1,2,3));
* Flux.from(SetX.of(1,2,3));
* }
*
*
* @author johnmcclean
*
*/
public interface CyclopsReactor {
static AnyMSeq from(Publisher extends T> t){
return (AnyMSeq)AnyM.ofSeq(Flux.from(t));
}
static SeqSubscriber fromFlux(Flux flux){
SeqSubscriber seqSubscriber = SeqSubscriber.subscriber();
flux.subscribe(seqSubscriber);
return seqSubscriber;
}
static ValueSubscriber fromMono(Mono mono){
ValueSubscriber valueSubscriber = ValueSubscriber.subscriber();
mono.subscribe(valueSubscriber);
return valueSubscriber;
}
static ReactiveSeq reactiveSeq(Flux flux){
return fromFlux(flux)
.stream();
}
static LazyFutureStream futureStream(Flux flux, LazyReact lazyReact){
return fromFlux(flux)
.toFutureStream(lazyReact);
}
static FutureW futureW(Mono mono){
return FutureW.of(mono.toCompletableFuture());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy