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

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