@Override
public Observable<?> call(Observable<? extends Throwable> observable) {
return observable.zipWith(Observable.range(1, retryCount + 1), new Func2<Throwable, Integer, ExceptionWrapper>() {
@Override
public ExceptionWrapper call(Throwable throwable, Integer integer) {
return new ExceptionWrapper(integer, throwable);
}
}).flatMap(new Func1<ExceptionWrapper, Observable<?>>() {
@Override
public Observable<?> call(ExceptionWrapper exceptionWrapper) {
if ((exceptionWrapper.throwable instanceof ConnectException ||
exceptionWrapper.throwable instanceof SocketException ||
exceptionWrapper.throwable instanceof TimeoutException) && exceptionWrapper.index < retryCount + 1) {
return Observable.timer(delayTime + (exceptionWrapper.index - 1) * delayTime, java.util.concurrent.TimeUnit.MILLISECONDS);
}
return Observable.error(exceptionWrapper.throwable);
}
});
}
RetryWhenNetWorkException.java 文件源码
java
阅读 26
收藏 0
点赞 0
评论 0
项目:TestChat
作者:
评论列表
文章目录