internal void Run() { if (CurrentCount != 0) { try { Wait(); } catch (ObjectDisposedException) { return; } } var ex = error; if (ex != ExceptionHelper.TERMINATED) { downstream.OnError(ex); } else { downstream.OnCompleted(); } }
public void OnCompleted() { upstream = DisposableHelper.DISPOSED; try { onCompleted?.Invoke(); } catch (Exception ex) { Error(ex, true); return; } try { onTerminate?.Invoke(); } catch (Exception ex) { Error(ex, false); return; } downstream.OnCompleted(); try { onAfterTerminate?.Invoke(); } catch (Exception) { // FIXME what should happen with the exception } Finally(); }
internal void Run() { for (; ;) { var d = Volatile.Read(ref task); if (d == DisposableHelper.DISPOSED) { break; } if (Interlocked.CompareExchange(ref task, DisposableHelper.EMPTY, d) == d) { var ex = error; if (ex != null) { downstream.OnError(ex); } else { downstream.OnCompleted(); } break; } } }
public virtual void OnCompleted() { downstream.OnCompleted(); }
public void OnCompleted() { upstream = null; downstream.OnCompleted(); }
public void OnCompleted() { DisposableHelper.WeakDispose(ref upstream); downstream.OnCompleted(); }
internal static void Complete(this ICompletableObserver observer) { observer.OnSubscribe(EMPTY); observer.OnCompleted(); }