protected override IDisposable Run(IObserver <T> observer) { var sourcesEnumerable = this.sources; var sources = default(IObservable <T>[]); try { sources = sourcesEnumerable.ToArray(); } catch (Exception ex) { observer.OnError(ex); return(Disposable.Empty); } return(AmbCoordinator <T> .Create(observer, sources)); }
internal static IDisposable Create(IObserver <T> observer, IObservable <T>[] sources) { var n = sources.Length; if (n == 0) { observer.OnCompleted(); return(Disposable.Empty); } if (n == 1) { return(sources[0].Subscribe(observer)); } var parent = new AmbCoordinator <T>(observer, n); parent.Subscribe(sources); return(parent); }
public InnerObserver(AmbCoordinator <T> parent, int index) { this.downstream = parent.downstream; this.parent = parent; this.index = index; }
protected override IDisposable Run(IObserver <T> observer) { return(AmbCoordinator <T> .Create(observer, sources)); }
public AmbObserver(IObserver <TSource> downstream, AmbCoordinator parent, bool isLeft) : base(downstream) { _parent = parent; _isLeft = isLeft; }
protected override void Run(AmbCoordinator sink) => sink.Run(_left, _right);
public AmbObserver(IObserver <TSource> downstream, AmbCoordinator parent, bool isLeft) { this.downstream = downstream; this.parent = parent; this.isLeft = isLeft; }
protected override IDisposable Run(AmbCoordinator sink) => sink.Run(_left, _right);
public InnerObserver(AmbCoordinator <T> parent, int index) : base(parent._downstream) { _parent = parent; _index = index; }