private void EndLeftReset(int oldCount) { if (oldCount > 0 && _leftJoiners.Count == 0) { _rightJoiner?.Set(_right); } if (_leftJoiners.Count == 0 && !HasRight) { SetEmptied?.Invoke(this); } }
private void RemoveLeft(ActiveListJoinerData <TLeft, TRight, TResult, TKey> data) { try { data.Clear(); } finally { JoinerRemoved.Invoke(data); data.Dispose(); if (_leftJoiners.Count == 0) { _rightJoiner?.Set(_right); } if (_leftJoiners.Count == 0 && !HasRight) { SetEmptied?.Invoke(this); } } }
public void ClearRight() { HasRight = false; var data = _rightJoiner; _rightJoiner = null; try { data.Clear(); } finally { JoinerRemoved.Invoke(data); data.Dispose(); if (_leftJoiners.Count == 0 && !HasRight) { SetEmptied?.Invoke(this); } } }