void Timeout(long idx) { if (Volatile.Read(ref index) == idx && Interlocked.CompareExchange(ref index, long.MaxValue, idx) == idx) { SubscriptionHelper.Cancel(ref upstream); Interlocked.Exchange(ref timer, DisposableHelper.Disposed); var p = fallback; if (p == null) { actual.OnError(new TimeoutException()); } else { long q = produced; if (q != 0L) { ArbiterProduced(q); } p.Subscribe(new FallbackSubscriber(this)); } worker.Dispose(); } }
void OtherComplete() { if (Volatile.Read(ref latest) == null) { SubscriptionHelper.Cancel(ref upstream); SerializationHelper.OnComplete(actual, ref wip, ref error); } }
public void Cancel() { Volatile.Write(ref cancelled, true); SubscriptionHelper.Cancel(ref upstream); boundary.Cancel(); lock (this) { buffer = default(C); } }
public void OnError(Exception cause) { if (done) { return; } done = true; SubscriptionHelper.Cancel(ref otherSubscriber.upstream); latest = null; SerializationHelper.OnError(actual, ref wip, ref error, cause); }
public void OnComplete() { if (done) { return; } done = true; SubscriptionHelper.Cancel(ref otherSubscriber.upstream); latest = null; SerializationHelper.OnComplete(actual, ref wip, ref error); }
void BoundaryError(Exception cause) { SubscriptionHelper.Cancel(ref upstream); lock (this) { buffer = default(C); error = cause; } Volatile.Write(ref done, true); Drain(); }
public void Cancel() { SubscriptionHelper.Cancel(ref upstream); foreach (var inner in others) { SubscriptionHelper.Cancel(ref inner.upstream); } var ls = latest; for (int i = 0; i < ls.Length; i++) { ls[i] = null; } }
void OtherError(Exception ex, int index) { SubscriptionHelper.Cancel(ref upstream); var os = others; var n = os.Length; for (int i = 0; i < n; i++) { if (i != index) { SubscriptionHelper.Cancel(ref os[i].upstream); } } SerializationHelper.OnError(actual, ref wip, ref error, ex); }
void BoundaryComplete() { SubscriptionHelper.Cancel(ref upstream); lock (this) { var b = buffer; if (b == null) { return; } buffer = default(C); queue.Offer(b); } Volatile.Write(ref done, true); Drain(); }
public void OnComplete() { if (done) { return; } done = true; foreach (var inner in others) { SubscriptionHelper.Cancel(ref inner.upstream); } for (int i = 0; i < latest.Length; i++) { latest[i] = null; } SerializationHelper.OnComplete(actual, ref wip, ref error); }
void OtherComplete(int index) { if (Volatile.Read(ref latest[index]) == null) { SubscriptionHelper.Cancel(ref upstream); var os = others; var n = os.Length; for (int i = 0; i < n; i++) { if (i != index) { SubscriptionHelper.Cancel(ref os[i].upstream); } } SerializationHelper.OnComplete(actual, ref wip, ref error); } }
void BoundaryComplete() { SubscriptionHelper.Cancel(ref upstream); UnicastProcessor <T> b; lock (this) { b = buffer; if (b == null) { return; } buffer = null; } b.OnComplete(); Volatile.Write(ref done, true); Drain(); }
void OtherComplete() { var curr = Interlocked.Exchange(ref latest, Terminated); SubscriptionHelper.Cancel(ref upstream); if (curr != Terminated) { if (curr != null && emitLast) { other.CompleteLast(curr.item); } else { actual.OnComplete(); } } }
void BoundaryError(Exception cause) { SubscriptionHelper.Cancel(ref upstream); UnicastProcessor <T> b; lock (this) { b = buffer; if (b == null) { return; } buffer = null; error = cause; } b.OnError(cause); Volatile.Write(ref done, true); Drain(); }
public void Cancel() { SubscriptionHelper.Cancel(ref upstream); }
internal void CancelOther() { Volatile.Write(ref cancelled, true); SubscriptionHelper.Cancel(ref upstream); }
void OtherError(Exception ex) { Interlocked.Exchange(ref latest, Terminated); SubscriptionHelper.Cancel(ref upstream); actual.OnError(ex); }
void OtherSignal() { SubscriptionHelper.Cancel(ref upstream); SerializationHelper.OnComplete(actual, ref wip, ref error); }
void OtherError(Exception ex) { SubscriptionHelper.Cancel(ref upstream); SerializationHelper.OnError(actual, ref wip, ref error, ex); }
public void Cancel() { SubscriptionHelper.Cancel(ref upstream); SubscriptionHelper.Cancel(ref otherSubscriber.upstream); }
public void OnError(Exception cause) { SubscriptionHelper.Cancel(ref other.upstream); SerializationHelper.OnError(actual, ref wip, ref error, cause); }
public void Cancel() { SubscriptionHelper.Cancel(ref upstream); worker.Dispose(); }
internal void Cancel() { SubscriptionHelper.Cancel(ref upstream); }
public void OnComplete() { SubscriptionHelper.Cancel(ref other.upstream); SerializationHelper.OnComplete(actual, ref wip, ref error); }