package com.nominanuda.zen.reactivestreams;
import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;
public abstract class BlockingSink<T> implements Subscriber<T> {
protected Subscription subscription;
@Override
public void onSubscribe(Subscription s) {
subscription = s;
subscription.request(1);
}
@Override
public void onNext(T t) {
try {
blockingOp(t);
subscription.request(1);
} catch (Exception e) {
subscription.cancel();
}
}
protected abstract void blockingOp(T t) throws Exception;
// @Override
// public void onError(Throwable t) {
// // TODO Auto-generated method stub
//
// }
//
// @Override
// public void onComplete() {
// // TODO Auto-generated method stub
//
// }
}