
com.aol.micro.server.javaslang.reactive.JavaslangReactive Maven / Gradle / Ivy
package com.aol.micro.server.javaslang.reactive;
import org.reactivestreams.Publisher;
import org.reactivestreams.Subscriber;
import com.aol.cyclops.control.LazyReact;
import com.aol.cyclops.javaslang.Javaslang;
import com.aol.cyclops.types.futurestream.LazyFutureStream;
import com.aol.cyclops.types.stream.reactive.SeqSubscriber;
import javaslang.Value;
import javaslang.collection.Stream;
import javaslang.collection.Traversable;
/**
* Mixin / Trait for Reactive behaviour via simple-react
*
* @author johnmcclean
*
*/
public class JavaslangReactive {
static LazyFutureStream futureStream(Traversable seq, LazyReact lazyReact){
return lazyReact.fromIterable(seq);
}
/**
* Publish a reactive-streams publisher to a new Javaslang Stream
*
* @param publisher to publish
* @return Stream subscribed to publisher
*/
public static Stream publishStream(Publisher publisher){
SeqSubscriber sub= SeqSubscriber.subscriber();
publisher.subscribe(sub);
return Stream.ofAll(sub.stream());
}
public static void subsribeToValue(Value s, Subscriber sub){
Javaslang.value(s).subscribe(sub);
}
/**
* Have a reactive-stream subscriber subscribe to a Javaslang Stream.
*
* @param s Stream to subscribe to
* @param sub Subscriber
*/
public static void subsribeToTraversable(Traversable s, Subscriber sub){
Javaslang.traversable(s).subscribe(sub);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy