public void Subscribe(ICompletableObserver observer) { RequireNonNull(observer, nameof(observer)); var completeSignals = new UnicastSubject <object>(); var redo = default(IObservable <U>); try { redo = RequireNonNullRef(handler(completeSignals), "The handler returned a null IObservable"); } catch (Exception ex) { DisposableHelper.Error(observer, ex); return; } var parent = new MainObserver(observer, source, new SerializedObserver <object>(completeSignals)); var d = redo.Subscribe(parent.handlerObserver); parent.handlerObserver.OnSubscribe(d); parent.HandlerNext(); }
public IDisposable Subscribe(IObserver <T> observer) { if (observer == null) { throw new ArgumentNullException(nameof(observer)); } var errorSignals = new UnicastSubject <Exception>(); var redo = default(IObservable <U>); try { redo = handler(errorSignals); if (redo == null) { throw new NullReferenceException("The handler returned a null IObservable"); } } catch (Exception ex) { observer.OnError(ex); return(DisposableHelper.EMPTY); } var parent = new MainObserver(observer, source, new SerializedObserver <Exception>(errorSignals)); var d = redo.Subscribe(parent.handlerObserver); parent.handlerObserver.OnSubscribe(d); parent.HandlerNext(); return(parent); }
public IDisposable Subscribe(IObserver <T> observer) { RequireNonNull(observer, nameof(observer)); var errorSignals = new UnicastSubject <Exception>(); var redo = default(IObservable <U>); try { redo = RequireNonNullRef(handler(errorSignals), "The handler returned a null IObservable"); } catch (Exception ex) { observer.OnError(ex); return(DisposableHelper.EMPTY); } var parent = new MainObserver(observer, source, new SerializedObserver <Exception>(errorSignals)); var d = redo.Subscribe(parent.handlerObserver); parent.handlerObserver.OnSubscribe(d); parent.HandlerNext(); return(parent); }
public IDisposable Subscribe(IObserver <T> observer) { var terminalSignal = new UnicastSubject <object>(); var redoSignal = default(IObservable <U>); try { redoSignal = RequireNonNullRef(handler(terminalSignal), "The handler returned a null IObservable"); } catch (Exception ex) { observer.OnError(ex); return(DisposableHelper.EMPTY); } var parent = new RepeatWhenObserver(observer, source, ((IObserver <object>)terminalSignal).ToSerialized()); parent.redoObserver.OnSubscribe(redoSignal.Subscribe(parent.redoObserver)); parent.Next(); return(parent); }
public void Subscribe(IMaybeObserver <T> observer) { var terminalSignal = new UnicastSubject <Exception>(); var redoSignal = default(IObservable <U>); try { redoSignal = RequireNonNullRef(handler(terminalSignal), "The handler returned a null IObservable"); } catch (Exception ex) { observer.Error(ex); return; } var parent = new RetryWhenObserver(observer, source, ((IObserver <Exception>)terminalSignal).ToSerialized()); observer.OnSubscribe(parent); parent.redoObserver.OnSubscribe(redoSignal.Subscribe(parent.redoObserver)); parent.Next(); }
public DisposeObserver(UnicastSubject <T> parent) { Volatile.Write(ref this.parent, parent); }