All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.aol.micro.server.reactive.CyclopsReactor Maven / Gradle / Ivy

There is a newer version: 0.91.11
Show newest version
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 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