Exemplo n.º 1
0
 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;
         }
     }
 }
Exemplo n.º 2
0
 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;
     }
 }
Exemplo n.º 3
0
            private void ClosePublisher(ICompletedState withState)
            {
                SubscriptionTimeout.Cancel();
                var prev = _state.Value;

                _state.Value = withState;

                if (prev is ICompletedState)
                {
                    throw new IllegalStateException("Attempted to double shutdown publisher");
                }

                if (prev is Attached)
                {
                    var sub = ((Attached)prev).Subscriber;
                    if (Subscriber == null)
                    {
                        ReactiveStreamsCompliance.TryOnSubscribe(sub, CancelledSubscription.Instance);
                    }
                    CloseSubscriber(sub, withState);
                }
            }
Exemplo n.º 4
0
 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);
     }
 }
Exemplo n.º 5
0
 public void Dispatch(TIn element) => ReactiveStreamsCompliance.TryOnNext(Subscriber, element);
Exemplo n.º 6
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="element">TBD</param>
 public void OnNext(T element)
 {
     ReactiveStreamsCompliance.RequireNonNullElement(element);
     _impl.Tell(new FanIn.OnNext(_id, element));
 }
Exemplo n.º 7
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="cause">TBD</param>
 public void OnError(Exception cause)
 {
     ReactiveStreamsCompliance.RequireNonNullException(cause);
     _impl.Tell(new FanIn.OnError(_id, cause));
 }
Exemplo n.º 8
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="subscription">TBD</param>
 public void OnSubscribe(ISubscription subscription)
 {
     ReactiveStreamsCompliance.RequireNonNullSubscription(subscription);
     _impl.Tell(new FanIn.OnSubscribe(_id, subscription));
 }
Exemplo n.º 9
0
 public void EnqueueOutputElement(object element)
 {
     ReactiveStreamsCompliance.RequireNonNullElement(element);
     DownstreamDemand--;
     ReactiveStreamsCompliance.TryOnNext(Subscriber, element);
 }
Exemplo n.º 10
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="element">TBD</param>
 public void EnqueueOutputElement(object element)
 {
     ReactiveStreamsCompliance.RequireNonNullElement(element);
     _downstreamBufferSpace -= 1;
     PushToDownstream((T)element);
 }
Exemplo n.º 11
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="cause">TBD</param>
 public void OnError(Exception cause)
 {
     ReactiveStreamsCompliance.RequireNonNullException(cause);
     _whenCompleted.TrySetException(cause);
 }
Exemplo n.º 12
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="cause">TBD</param>
 public void OnError(Exception cause) => ReactiveStreamsCompliance.RequireNonNullException(cause);
Exemplo n.º 13
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="subscription">TBD</param>
 public void OnSubscribe(ISubscription subscription)
 {
     ReactiveStreamsCompliance.RequireNonNullSubscription(subscription);
     subscription.Cancel();
 }
Exemplo n.º 14
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="cause">TBD</param>
 /// <param name="name">TBD</param>
 public ErrorPublisher(Exception cause, string name)
 {
     ReactiveStreamsCompliance.RequireNonNullElement(cause);
     Cause = cause;
     Name  = name;
 }
Exemplo n.º 15
0
 public void Apply <T>(ISubscriber <T> subscriber) => ReactiveStreamsCompliance.TryOnComplete(subscriber);
Exemplo n.º 16
0
 public void Apply <T>(ISubscriber <T> subscriber) => ReactiveStreamsCompliance.TryOnError(subscriber, Cause);
Exemplo n.º 17
0
 /// <summary>
 /// TBD
 /// </summary>
 /// <param name="element">TBD</param>
 public void OnNext(TIn element) => ReactiveStreamsCompliance.RequireNonNullElement(element);