コード例 #1
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);
                }
            }
コード例 #2
0
ファイル: ActorProcessor.cs プロジェクト: yfer/akka.net
 public virtual void Complete()
 {
     if (!IsDownstreamCompleted)
     {
         IsDownstreamCompleted = true;
         if (!ReferenceEquals(ExposedPublisher, null))
         {
             ExposedPublisher.Shutdown(null);
         }
         if (!ReferenceEquals(Subscriber, null))
         {
             ReactiveStreamsCompliance.TryOnComplete(Subscriber);
         }
     }
 }
コード例 #3
0
 /// <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;
         }
     }
 }
コード例 #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);
     }
 }
コード例 #5
0
ファイル: SubscriberManagement.cs プロジェクト: yfer/akka.net
 public void Apply <T>(ISubscriber <T> subscriber) => ReactiveStreamsCompliance.TryOnComplete(subscriber);