private void CloseSubscriber(ISubscriber <T> subscriber, ICompletedState withState) { var f = withState as Failed; if (withState is Completed) { ReactiveStreamsCompliance.TryOnComplete(subscriber); } else if (f != null && !(f.Reason is ISpecViolation)) { ReactiveStreamsCompliance.TryOnError(subscriber, f.Reason); } }
public virtual void Complete() { if (!IsDownstreamCompleted) { IsDownstreamCompleted = true; if (!ReferenceEquals(ExposedPublisher, null)) { ExposedPublisher.Shutdown(null); } if (!ReferenceEquals(Subscriber, null)) { ReactiveStreamsCompliance.TryOnComplete(Subscriber); } } }
/// <summary> /// TBD /// </summary> /// <param name="subscriber">TBD</param> public void Subscribe(ISubscriber <T> subscriber) { try { ReactiveStreamsCompliance.RequireNonNullSubscriber(subscriber); ReactiveStreamsCompliance.TryOnSubscribe(subscriber, CancelledSubscription.Instance); ReactiveStreamsCompliance.TryOnComplete(subscriber); } catch (Exception e) { if (!(e is ISpecViolation)) { throw; } } }
public void Request(long n) { if (n < 1) { ReactiveStreamsCompliance.RejectDueToNonPositiveDemand(_subscriber); } if (!_done) { _done = true; _promise.Task.ContinueWith(t => { if (!_promise.Task.Result.IsDefaultForType()) { ReactiveStreamsCompliance.TryOnNext(_subscriber, _promise.Task.Result); ReactiveStreamsCompliance.TryOnComplete(_subscriber); } else { ReactiveStreamsCompliance.TryOnComplete(_subscriber); } }, TaskContinuationOptions.OnlyOnRanToCompletion); } }
public void Apply <T>(ISubscriber <T> subscriber) => ReactiveStreamsCompliance.TryOnComplete(subscriber);