コード例 #1
0
 public void OnError(Exception e)
 {
     if (delayError)
     {
         IDisposable a = scheduler.ScheduleDirect(() => actual.OnError(e), delay);
         DisposableHelper.Replace(ref this.t, a);
     }
     else
     {
         actual.OnError(e);
     }
 }
コード例 #2
0
 public void OnComplete()
 {
     if (count == 1)
     {
         actual.OnSuccess(value);
     }
     else
     if (count == 0)
     {
         actual.OnError(new IndexOutOfRangeException("Source is empty"));
     }
 }
コード例 #3
0
        public void OnComplete()
        {
            T v;

            try
            {
                v = valueSupplier();
            }
            catch (Exception e)
            {
                actual.OnError(e);
                return;
            }
            actual.OnSuccess(v);
        }
コード例 #4
0
        public void OnError(Exception e)
        {
            try
            {
                onErrorCall(e);
            }
            catch (Exception ex)
            {
                actual.OnError(new AggregateException(e, ex));
                return;
            }

            actual.OnError(e);

            DoAfterTerminated();
        }
コード例 #5
0
 public void OnError(Exception e)
 {
     if (Interlocked.Exchange(ref counter[0], 0) > 0)
     {
         actual.OnError(e);
     }
 }
コード例 #6
0
        public void Subscribe(ISingleSubscriber <T> s)
        {
            SingleDisposable sd = new SingleDisposable(this, s);

            s.OnSubscribe(sd);

            if (Add(sd))
            {
                if (sd.IsDisposed())
                {
                    Remove(sd);
                }

                if (Volatile.Read(ref once) == 0)
                {
                    if (Interlocked.CompareExchange(ref once, 1, 0) == 0)
                    {
                        source.Subscribe(this);
                    }
                }
            }
            else
            {
                ValueOrError r = Volatile.Read(ref result);
                if (r.IsError())
                {
                    s.OnError(r.error);
                }
                else
                {
                    s.OnSuccess(r.value);
                }
            }
        }
コード例 #7
0
        public void OnError(Exception e)
        {
            if (Interlocked.CompareExchange(ref once, 1, 0) == 0)
            {
                all.Dispose();

                actual.OnError(e);
            }
        }
コード例 #8
0
        public void OnError(Exception e)
        {
            IDisposable a = scheduler.ScheduleDirect(() =>
            {
                actual.OnError(e);
            });

            DisposableHelper.Replace(ref this.t, a);
        }
コード例 #9
0
        public void OnSuccess(T t)
        {
            T[] a = array;
            a[index] = t;
            if (Interlocked.Decrement(ref counter[0]) == 0)
            {
                R r;

                try
                {
                    r = zipper(a);
                }
                catch (Exception ex)
                {
                    actual.OnError(ex);
                    return;
                }
                actual.OnSuccess(r);
            }
        }
コード例 #10
0
        public void OnError(Exception e)
        {
            T v;

            try
            {
                v = valueSupplier();
            }
            catch (Exception ex)
            {
                actual.OnError(new AggregateException(e, ex));
                return;
            }

            actual.OnSuccess(v);
        }
コード例 #11
0
        public void OnError(Exception e)
        {
            if (Interlocked.CompareExchange(ref once, 1, 0) != 0)
            {
                return;
            }

            if (eager)
            {
            }

            actual.OnError(e);

            if (!eager)
            {
                DoTerminate();
            }
        }
コード例 #12
0
        public void OnError(Exception e)
        {
            if (!once)
            {
                ISingle <T> s;

                try {
                    s = resumeWith(e);
                }
                catch (Exception ex)
                {
                    actual.OnError(new AggregateException(e, ex));
                    return;
                }

                once = true;
                s.Subscribe(this);
            }
        }
コード例 #13
0
        public void OnError(Exception e)
        {
            bool b;

            try
            {
                b = retryIf(e);
            }
            catch (Exception ex)
            {
                actual.OnError(new AggregateException(e, ex));
                return;
            }

            if (b)
            {
                Resubscribe();
            }
        }
コード例 #14
0
 public void OnError(Exception e)
 {
     actual.OnError(e);
 }
コード例 #15
0
 public static void Error <T>(ISingleSubscriber <T> cs, Exception e)
 {
     cs.OnSubscribe(Instance);
     cs.OnError(e);
 }