/// <summary> /// TBD /// </summary> /// <param name="subscriber">TBD</param> public void Subscribe(ISubscriber <T> subscriber) { ReactiveStreamsCompliance.RequireNonNullSubscriber(subscriber); ReactiveStreamsCompliance.TryOnSubscribe(subscriber, new MaybeSubscription(subscriber, Promise)); Promise.Task.ContinueWith(t => { ReactiveStreamsCompliance.TryOnError(subscriber, t.Exception); }, TaskContinuationOptions.NotOnRanToCompletion); }
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 Error(Exception e) { if (!IsDownstreamCompleted) { IsDownstreamCompleted = true; if (!ReferenceEquals(ExposedPublisher, null)) { ExposedPublisher.Shutdown(e); } if (!ReferenceEquals(Subscriber, null) && !(e is ISpecViolation)) { ReactiveStreamsCompliance.TryOnError(Subscriber, e); } } }
/// <summary> /// TBD /// </summary> /// <param name="subscriber">TBD</param> public void Subscribe(ISubscriber <T> subscriber) { try { ReactiveStreamsCompliance.RequireNonNullSubscriber(subscriber); ReactiveStreamsCompliance.TryOnSubscribe(subscriber, CancelledSubscription.Instance); ReactiveStreamsCompliance.TryOnError(subscriber, Cause); } catch (Exception e) { if (!(e is ISpecViolation)) { throw; } } }
public void Subscribe(ISubscriber <T> subscriber) { try { ReactiveStreamsCompliance.RequireNonNullSubscriber(subscriber); ReactiveStreamsCompliance.TryOnSubscribe(subscriber, new MaybeSubscription(subscriber, Promise)); Promise.Task.ContinueWith(t => { ReactiveStreamsCompliance.TryOnError(subscriber, t.Exception); }, TaskContinuationOptions.NotOnRanToCompletion); } catch (Exception) { //case sv: SpecViolation ⇒ ec.reportFailure(sv) throw; } }
public void Apply <T>(ISubscriber <T> subscriber) => ReactiveStreamsCompliance.TryOnError(subscriber, Cause);