public void ClearBuffer() { lock (SampleQueue) { SampleQueue.Clear(); } }
public void TrimAndKeepDiscarded(SampleQueue refQueue) { BufferedSample sample = null; BufferedSample discardedSample; refQueue.Clear(); while (head.next != null && head.next.shouldBeRemoved) { discardedSample = head.next; discardedSample.shouldBeRemoved = false; head.next = discardedSample.next; refQueue.Enqueue(discardedSample); //enqueue cached because enqueuing might set next to null if is last } if (head.next != null) { sample = head.next; while (sample.next != null) { if (sample.next.shouldBeRemoved) { discardedSample = sample.next; discardedSample.shouldBeRemoved = false; sample.next = discardedSample.next; refQueue.Enqueue(discardedSample); //enqueue cached because enqueuing might set next to null if is last } else { sample = sample.next; } } } if (head.next == null) { last = null; } else { last = sample; } }