public static <T> BreakerSwitchSubject<T> create(final Subject<T, T> delegate) { final BreakerSwitchOperator<T> breaker = new BreakerSwitchOperator<>(); return new BreakerSwitchSubject<>(new OnSubscribe<T>() { @Override public void call(Subscriber<? super T> subscriber) { delegate.lift(breaker).subscribe(new SafeSubscriber<>(subscriber)); } }, delegate, breaker); } }
final AsyncSubject<Void> initSubject = AsyncSubject.create(); // subject used to cache init status final BreakerSwitchSubject<CHANNEL> channelSubject = BreakerSwitchSubject.create(BehaviorSubject.<CHANNEL>create()); channelSubject.asObservable(), lifecycle.asObservable(), initSubject.asObservable(),