@Override public Observable<Long> call(Observable<? extends Throwable> errorObservable) {
return errorObservable.zipWith(Observable.range(INITIAL, maxConnectCount),
new Func2<Throwable, Integer, InnerThrowable>() {
@Override public InnerThrowable call(Throwable throwable, Integer i) {
if (throwable instanceof IOException) return new InnerThrowable(throwable, i);
return new InnerThrowable(throwable, i);
}
}).concatMap(new Func1<InnerThrowable, Observable<Long>>() {
@Override public Observable<Long> call(InnerThrowable innerThrowable) {
Integer currentCount = innerThrowable.getCurrentRetryCount();
if (RetryWhenFunc.this.maxConnectCount.equals(currentCount)) {
return Observable.error(innerThrowable.getThrowable());
}
/*use Schedulers#immediate() to keep on same thread */
return Observable.timer((long) Math.pow(2, currentCount), TimeUnit.SECONDS,
Schedulers.immediate());
}
});
}
RxJavaCallAdapterFactory.java 文件源码
java
阅读 25
收藏 0
点赞 0
评论 0
项目:HttpService
作者:
评论列表
文章目录