package com.runt.open.mvi.retrofit.observable;
|
|
|
import com.runt.open.mvi.base.model.BaseViewModel;
|
import com.runt.open.mvi.data.HttpApiResult;
|
|
import java.util.Date;
|
|
import io.reactivex.Observable;
|
|
/**
|
* 请求超时处理
|
* @author Runt (qingingrunt2010@qq.com)
|
* @purpose
|
* @date 2023/3/21
|
*/
|
public abstract class HttpErrorObserver<RESULT> extends HttpObserver<RESULT>{
|
|
protected long requestErrorTimes = new Date().getTime();
|
protected final long OVERTIME = 50000;//超时时长50s
|
protected Observable observable;//接口请求服务
|
protected BaseViewModel viewModel;
|
|
public HttpErrorObserver(Observable observable, BaseViewModel viewModel) {
|
this.observable = observable;
|
this.viewModel = viewModel;
|
}
|
|
public HttpErrorObserver(BaseViewModel viewModel) {
|
this(null,viewModel);
|
}
|
|
public void setObservable(Observable observable) {
|
this.observable = observable;
|
}
|
|
@Override
|
public void onFailed(HttpApiResult<RESULT> httpResult) {
|
if(httpResult.code >= 604 && httpResult.code < 608 && new Date().getTime() - requestErrorTimes < OVERTIME){
|
try {
|
viewModel.httpObserverOn(observable,this);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}else if(httpResult.code >= 604 && httpResult.code < 608 ){
|
onTimeOut();
|
}else{
|
onEndFailed(httpResult);
|
}
|
}
|
|
/**
|
* 请求错误
|
*/
|
public abstract void onEndFailed(HttpApiResult<RESULT> httpResult);
|
|
/**
|
* 请求超时
|
*/
|
public abstract void onTimeOut();
|
}
|