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 extends HttpObserver{ 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 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 httpResult); /** * 请求超时 */ public abstract void onTimeOut(); }