package com.github.lpezet.antiope2.retrofitted;
import rx.Observable;
import rx.Subscriber;
/**
* Utilities for supporting RxJava Observables.
* <p>
* RxJava might not be on the available to use. Check {@link Platform#HAS_RX_JAVA} before calling.
*/
final class RxSupport {
interface Invoker {
void invoke(Callback callback);
interface Callback {
void next(Object o);
void error(Throwable t);
}
}
RxSupport() {
}
Observable createRequestObservable(final Invoker invoker) {
return Observable.create(new Observable.OnSubscribe<Object>() {
@Override public void call(final Subscriber<? super Object> subscriber) {
invoker.invoke(new Invoker.Callback() {
@Override public void next(Object o) {
if (!subscriber.isUnsubscribed()) {
subscriber.onNext(o);
subscriber.onCompleted();
}
}
@Override public void error(Throwable t) {
if (!subscriber.isUnsubscribed()) {
subscriber.onError(t);
}
}
});
}
});
}
}