public override void OnNext(IObservable <TSource> value) { var innerObserver = new InnerObserver(this); _group.Add(innerObserver); innerObserver.SetResource(value.SubscribeSafe(innerObserver)); }
private void Subscribe(IObservable <TSource> innerSource) { var innerObserver = new InnerObserver(this); _group.Add(innerObserver); innerObserver.SetResource(innerSource.SubscribeSafe(innerObserver)); }
public async ValueTask <bool> OnNextAsync(IAsyncObservable <T> value) { var inner = new InnerObserver(_observer); await value.SubscribeAsync(inner, _token).ConfigureAwait(false); return(inner.Keep); }
internal AmbCoordinator(IObserver <T> downstream, int n) { this.downstream = downstream; var o = new InnerObserver[n]; for (int i = 0; i < n; i++) { o[i] = new InnerObserver(this, i); } observers = o; Volatile.Write(ref winner, -1); }
public override void OnNext(IObservable <TSource> value) { ulong id; lock (_gate) { id = unchecked (++_latest); _hasLatest = true; } var innerObserver = new InnerObserver(this, id); Disposable.TrySetSerial(ref _innerSerialDisposable, innerObserver); innerObserver.SetResource(value.SubscribeSafe(innerObserver)); }
public async override ValueTask OnNextAsync(IAsyncObservable <T> value) { if (IsCanceled) { return; } var inner = new InnerObserver(this); try { _inner = inner; await value.SubscribeAsync(inner).ConfigureAwait(false); } catch (Exception error) { _inner = null; await SignalErrorAsync(error).ConfigureAwait(false); } _inner = null; }
public override ValueTask OnNextAsync(IAsyncObservable <T> value) { if (!IsCanceled) { var inner = new InnerObserver(this); var vt = Subscribe(value, inner); if (!vt.IsCompleted) { var t = vt.AsTask(); lock (_lock) { if (!t.IsCompleted) { _innerObs[inner] = t; } } } } return(default);
internal ConcatManyOuterObserver(IObserver <T> downstream) { _downstream = downstream; _queue = new ConcurrentQueue <IObservable <T> >(); _innerObserver = new InnerObserver(this); }
public OuterObserver(IObserver <T> observer) { this.observer = observer; innerObserver = new InnerObserver(this); }