public override void OnCompleted() { IScheduledObserver <T>[]? o = null; lock (_gate) { CheckDisposed(); if (!_isStopped) { _isStopped = true; Trim(); o = _observers.Data; foreach (var observer in o) { observer.OnCompleted(); } _observers = ImmutableList <IScheduledObserver <T> > .Empty; } } if (o != null) { foreach (var observer in o) { observer.EnsureActive(); } } }
public override void OnNext(T value) { IScheduledObserver <T>[]? o = null; lock (_gate) { CheckDisposed(); if (!_isStopped) { Next(value); Trim(); o = _observers.Data; foreach (var observer in o) { observer.OnNext(value); } } } if (o != null) { foreach (var observer in o) { observer.EnsureActive(); } } }
private void Unsubscribe(IScheduledObserver <T> observer) { lock (_gate) { if (!_isDisposed) { _observers = _observers.Remove(observer); } } }
public Subscription(ReplayBase subject, IScheduledObserver <T> observer) { _subject = subject; _observer = observer; }