
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