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

com.aol.micro.server.javaslang.reactive.JavaslangValueSubscriber Maven / Gradle / Ivy

package com.aol.micro.server.javaslang.reactive;

import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;

import com.aol.cyclops.control.Xor;
import com.aol.cyclops.javaslang.FromJDK;
import com.aol.cyclops.types.stream.reactive.ValueSubscriber;

import javaslang.control.Either;
import javaslang.control.Option;
import javaslang.control.Try;

public class JavaslangValueSubscriber implements Subscriber{
	
	/**
	 * A reactive-streams subscriber that can generate a Javaslang value type
	 * 
	 * @return JavaslangValueSubscriber
	 */
	public static  JavaslangValueSubscriber subscriber(){
		return new JavaslangValueSubscriber();
	}
	ValueSubscriber sub = ValueSubscriber.subscriber();

	public Option option(){
		return FromJDK.option(sub.toOptional());
	}
	public Try tryValue(){
		Xor xor = sub.toXor();
		return xor.visit(e->Try.failure(e),t->Try.success(t));
	}
	public Either either(){
		Xor xor = sub.toXor();
		return xor.visit(e->Either.left(e),t->Either.right(t));
	}
	@Override
	public void onSubscribe(Subscription s) {
		sub.onSubscribe(s);
		
	}
	@Override
	public void onNext(T t) {
		sub.onNext(t);
		
	}
	@Override
	public void onError(Throwable t) {
		sub.onError(t);
		
	}
	@Override
	public void onComplete() {
		sub.onComplete();
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy