package ren.solid.library.rx;
import org.reactivestreams.Publisher;
import io.reactivex.Completable;
import io.reactivex.CompletableSource;
import io.reactivex.CompletableTransformer;
import io.reactivex.Flowable;
import io.reactivex.FlowableTransformer;
import io.reactivex.Maybe;
import io.reactivex.MaybeSource;
import io.reactivex.MaybeTransformer;
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.ObservableTransformer;
import io.reactivex.Single;
import io.reactivex.SingleSource;
import io.reactivex.SingleTransformer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.schedulers.Schedulers;
/**
* Created by _SOLID
* Date:2016/7/27
* Time:21:17
*/
public class RxUtils {
public static <T> FlowableTransformer<T, T> defaultSchedulers_flow() {
return new FlowableTransformer<T, T>() {
@Override
public Publisher<T> apply(@NonNull Flowable<T> upstream) {
return upstream.observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io());
}
};
}
public static <T> SingleTransformer<T, T> defaultSchedulers_single() {
return new SingleTransformer<T, T>() {
@Override
public SingleSource<T> apply(@NonNull Single<T> upstream) {
return upstream.observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io());
}
};
}
public static <T> FlowableTransformer<T, T> all_io_flow() {
return new FlowableTransformer<T, T>() {
@Override
public Publisher<T> apply(@NonNull Flowable<T> upstream) {
return upstream.observeOn(Schedulers.io()).subscribeOn(Schedulers.io());
}
};
}
public static <T> SingleTransformer<T, T> all_io_single() {
return new SingleTransformer<T, T>() {
@Override
public SingleSource<T> apply(@NonNull Single<T> upstream) {
return upstream.observeOn(Schedulers.io()).subscribeOn(Schedulers.io());
}
};
}
class SchedulerTransform<T> implements ObservableTransformer<T, T>,
FlowableTransformer<T, T>,
SingleTransformer<T, T>,
MaybeTransformer<T, T>,
CompletableTransformer {
@Override
public CompletableSource apply(@NonNull Completable upstream) {
return null;
}
@Override
public Publisher<T> apply(@NonNull Flowable<T> upstream) {
return null;
}
@Override
public MaybeSource<T> apply(@NonNull Maybe<T> upstream) {
return null;
}
@Override
public ObservableSource<T> apply(@NonNull Observable<T> upstream) {
return null;
}
@Override
public SingleSource<T> apply(@NonNull Single<T> upstream) {
return null;
}
}
}