/// <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);
 }
Exemple #2
0
            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);
                }
            }
Exemple #3
0
 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);