protected override void OnStart(ISubscription subscription)
 {
     if (limit == 0)
     {
         subscription.Cancel();
         actual.OnSubscribe(EmptySubscription <T> .Instance);
         OnComplete();
     }
     else
     {
         actual.OnSubscribe(this);
     }
 }
Esempio n. 2
0
 public void OnSubscribe(ISubscription subscription)
 {
     if (SubscriptionHelper.Validate(ref upstream, subscription))
     {
         actual.OnSubscribe(this);
     }
 }
 public void OnSubscribe(ISubscription s)
 {
     if (SubscriptionHelper.Validate(ref this.s, s))
     {
         actual.OnSubscribe(this);
     }
 }
Esempio n. 4
0
            public void OnSubscribe(ISubscription s)
            {
                if (SubscriptionHelper.Validate(ref this.s, s))
                {
                    actual.OnSubscribe(this);

                    s.Request(long.MaxValue);
                }
            }
Esempio n. 5
0
            protected override void OnStart(ISubscription subscription)
            {
                long n = remaining;

                actual.OnSubscribe(this);
                if (n > 0 && fusionMode != FusionSupport.SYNC)
                {
                    subscription.Request(n);
                }
            }
            public void OnSubscribe(ISubscription s)
            {
                if (SubscriptionHelper.Validate(ref this.s, s))
                {
                    var qs = s as IQueueSubscription <T>;
                    if (qs != null)
                    {
                        int m = qs.RequestFusion(FuseableHelper.ANY);
                        if (m == FuseableHelper.SYNC)
                        {
                            fusionMode = m;
                            queue      = qs;
                            Volatile.Write(ref done, true);

                            actual.OnSubscribe(this);

                            Drain();
                            return;
                        }
                        else
                        if (m == FuseableHelper.ASYNC)
                        {
                            fusionMode = m;
                            queue      = qs;

                            actual.OnSubscribe(this);

                            s.Request(prefetch < 0 ? long.MaxValue : prefetch);

                            return;
                        }
                    }

                    queue = QueueDrainHelper.CreateQueue <T>(prefetch);

                    actual.OnSubscribe(this);

                    s.Request(prefetch < 0 ? long.MaxValue : prefetch);
                }
            }
        public virtual void OnSubscribe(ISubscription s)
        {
            if (SubscriptionHelper.Validate(ref this.s, s))
            {
                qs = s as IQueueSubscription <T>;

                if (BeforeSubscribe())
                {
                    actual.OnSubscribe(this);

                    AfterSubscribe();
                }
            }
        }
Esempio n. 8
0
 protected override void OnStart(ISubscription subscription)
 {
     try
     {
         parent.onSubscribe?.Invoke(subscription);
     }
     catch (Exception ex)
     {
         subscription.Cancel();
         OnError(ex);
         return;
     }
     actual.OnSubscribe(this);
 }
Esempio n. 9
0
 protected override void OnStart(ISubscription subscription)
 {
     actual.OnSubscribe(this);
 }
 internal override void OnStart()
 {
     actual.OnSubscribe(this);
 }
Esempio n. 11
0
 protected override void SubscribeActual()
 {
     actual.OnSubscribe(this);
 }