package com.jakewharton.rxbinding2;
import io.reactivex.Observable;
import io.reactivex.Observer;
public abstract class InitialValueObservable<T> extends Observable<T> {
@Override protected final void subscribeActual(Observer<? super T> observer) {
subscribeListener(observer);
observer.onNext(getInitialValue());
}
protected abstract void subscribeListener(Observer<? super T> observer);
protected abstract T getInitialValue();
public final Observable<T> skipInitialValue() {
return new Skipped();
}
private final class Skipped extends Observable<T> {
Skipped() {
}
@Override protected void subscribeActual(Observer<? super T> observer) {
subscribeListener(observer);
}
}
}