Ejemplo n.º 1
0
 public void Request(long n)
 {
     if (SubscriptionHelper.Validate(n))
     {
         long u = SubscriptionHelper.MultiplyCap(n, size);
         upstream.Request(u);
     }
 }
 public void Request(long n)
 {
     if (SubscriptionHelper.Validate(n))
     {
         long u = SubscriptionHelper.MultiplyCap(n, skip);
         if (Volatile.Read(ref firstRequest) == 0 && Interlocked.CompareExchange(ref firstRequest, 1, 0) == 0)
         {
             if (u != long.MaxValue)
             {
                 u -= (skip - size);
             }
         }
         upstream.Request(u);
     }
 }
 public void Request(long n)
 {
     if (!SubscriptionHelper.PostCompleteMultiRequest(actual, ref requested, queue, n, ref cancelled))
     {
         long u = SubscriptionHelper.MultiplyCap(n, size - skip);
         if (Volatile.Read(ref firstRequest) == 0 && Interlocked.CompareExchange(ref firstRequest, 1, 0) == 0)
         {
             u += skip;
             if (u < 0L)
             {
                 u = long.MaxValue;
             }
         }
         upstream.Request(u);
     }
 }
 public void Request(long n)
 {
     if (SubscriptionHelper.Validate(n))
     {
         SubscriptionHelper.AddRequest(ref requested, n);
         long u = SubscriptionHelper.MultiplyCap(n, size - skip);
         if (Volatile.Read(ref firstRequest) == 0 && Interlocked.CompareExchange(ref firstRequest, 1, 0) == 0)
         {
             u += skip;
             if (u < 0L)
             {
                 u = long.MaxValue;
             }
         }
         upstream.Request(u);
     }
 }