netflix.ocelli.rxnetty.RxNettyFailureDetector Maven / Gradle / Ivy
package netflix.ocelli.rxnetty;
import io.reactivex.netty.metrics.HttpClientMetricEventsListener;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.Observable.OnSubscribe;
import rx.Subscriber;
import rx.Subscription;
import rx.functions.Func1;
/**
* A failure detector for RxNetty that detects failures which determine host health.
*/
public class RxNettyFailureDetector implements Func1, Observable>{
@Override
public Observable call(final HttpClientHolder holder) {
return Observable.create(new OnSubscribe() {
@Override
public void call(final Subscriber sub) {
Subscription s = holder.getClient().subscribe(new HttpClientMetricEventsListener() {
@Override
protected void onConnectFailed(long duration, TimeUnit timeUnit, Throwable throwable) {
sub.onNext(throwable);
}
});
sub.add(s);
}
});
}
}