Skip to content

Instantly share code, notes, and snippets.

@danylovolokh
Last active February 1, 2016 02:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save danylovolokh/e30e368bccba0e6eff9e to your computer and use it in GitHub Desktop.
Save danylovolokh/e30e368bccba0e6eff9e to your computer and use it in GitHub Desktop.
Server polling and retry operations when failed. With Retrofit and RxJava.
repeatWhen(new Func1<Observable<? extends Void>, Observable<?>>() {
@Override
public Observable<?> call(Observable<? extends Void> observable) {
Log.v(TAG, "repeatWhen, call");
return observable.flatMap(new Func1<Void, Observable<?>>() {
@Override
public Observable<?> call(Void aVoid) {
if(mCounter > ATTEMPTS){
// terminate by ourselves
throw new RuntimeException();
}
return Observable.timer(mCounter++ * ORIGINAL_DELAY_IN_SECONDS, TimeUnit.SECONDS);
}
});
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment