Adding support for .NET 8.0 LTS, renaming private fields to start with underscore
This commit is contained in:
@@ -12,10 +12,10 @@ namespace System.Collections.Generic
|
||||
{
|
||||
#region Fields
|
||||
|
||||
private readonly Queue<T> queue;
|
||||
private readonly Queue<T> _queue;
|
||||
|
||||
private TaskCompletionSource<bool> dequeueTcs = new();
|
||||
private TaskCompletionSource<bool> availableTcs = new();
|
||||
private TaskCompletionSource<bool> _dequeueTcs = new();
|
||||
private TaskCompletionSource<bool> _availableTcs = new();
|
||||
|
||||
#endregion Fields
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace System.Collections.Generic
|
||||
[ExcludeFromCodeCoverage]
|
||||
public AsyncQueue()
|
||||
{
|
||||
queue = new Queue<T>();
|
||||
_queue = new Queue<T>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -40,7 +40,7 @@ namespace System.Collections.Generic
|
||||
[ExcludeFromCodeCoverage]
|
||||
public AsyncQueue(IEnumerable<T> collection)
|
||||
{
|
||||
queue = new Queue<T>();
|
||||
_queue = new Queue<T>();
|
||||
Enqueue(collection);
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ namespace System.Collections.Generic
|
||||
[ExcludeFromCodeCoverage]
|
||||
public AsyncQueue(int capacity)
|
||||
{
|
||||
queue = new Queue<T>(capacity);
|
||||
_queue = new Queue<T>(capacity);
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
@@ -67,9 +67,9 @@ namespace System.Collections.Generic
|
||||
{
|
||||
get
|
||||
{
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
return queue.Count;
|
||||
return _queue.Count;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -84,9 +84,9 @@ namespace System.Collections.Generic
|
||||
[ExcludeFromCodeCoverage]
|
||||
public void Clear()
|
||||
{
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
queue.Clear();
|
||||
_queue.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,9 +98,9 @@ namespace System.Collections.Generic
|
||||
[ExcludeFromCodeCoverage]
|
||||
public bool Contains(T item)
|
||||
{
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
return queue.Contains(item);
|
||||
return _queue.Contains(item);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,9 +115,9 @@ namespace System.Collections.Generic
|
||||
[ExcludeFromCodeCoverage]
|
||||
public void CopyTo(T[] array, int arrayIndex)
|
||||
{
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
queue.CopyTo(array, arrayIndex);
|
||||
_queue.CopyTo(array, arrayIndex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,9 +129,9 @@ namespace System.Collections.Generic
|
||||
[ExcludeFromCodeCoverage]
|
||||
public T Dequeue()
|
||||
{
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
return queue.Dequeue();
|
||||
return _queue.Dequeue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,11 +141,11 @@ namespace System.Collections.Generic
|
||||
/// <param name="item">The object to add to the <see cref="AsyncQueue{T}"/>. The value can be null for reference types.</param>
|
||||
public void Enqueue(T item)
|
||||
{
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
queue.Enqueue(item);
|
||||
SetToken(dequeueTcs);
|
||||
SetToken(availableTcs);
|
||||
_queue.Enqueue(item);
|
||||
SetToken(_dequeueTcs);
|
||||
SetToken(_availableTcs);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,9 +157,9 @@ namespace System.Collections.Generic
|
||||
[ExcludeFromCodeCoverage]
|
||||
public T Peek()
|
||||
{
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
return queue.Peek();
|
||||
return _queue.Peek();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,9 +170,9 @@ namespace System.Collections.Generic
|
||||
[ExcludeFromCodeCoverage]
|
||||
public T[] ToArray()
|
||||
{
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
return queue.ToArray();
|
||||
return _queue.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,9 +182,9 @@ namespace System.Collections.Generic
|
||||
[ExcludeFromCodeCoverage]
|
||||
public void TrimExcess()
|
||||
{
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
queue.TrimExcess();
|
||||
_queue.TrimExcess();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,21 +203,21 @@ namespace System.Collections.Generic
|
||||
while (true)
|
||||
{
|
||||
TaskCompletionSource<bool> internalDequeueTcs;
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
if (queue.Count > 0)
|
||||
if (_queue.Count > 0)
|
||||
{
|
||||
int count = queue.Count;
|
||||
int count = _queue.Count;
|
||||
if (maxCount > 0 && count > maxCount)
|
||||
count = maxCount;
|
||||
|
||||
var items = new T[count];
|
||||
for (int i = 0; i < count; i++)
|
||||
items[i] = queue.Dequeue();
|
||||
items[i] = _queue.Dequeue();
|
||||
|
||||
return items;
|
||||
}
|
||||
internalDequeueTcs = ResetToken(ref dequeueTcs);
|
||||
internalDequeueTcs = ResetToken(ref _dequeueTcs);
|
||||
}
|
||||
|
||||
await WaitAsync(internalDequeueTcs, cancellationToken).ConfigureAwait(false);
|
||||
@@ -238,17 +238,17 @@ namespace System.Collections.Generic
|
||||
while (true)
|
||||
{
|
||||
TaskCompletionSource<bool> internalDequeueTcs;
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
if (count <= queue.Count)
|
||||
if (count <= _queue.Count)
|
||||
{
|
||||
var items = new T[count];
|
||||
for (int i = 0; i < count; i++)
|
||||
items[i] = queue.Dequeue();
|
||||
items[i] = _queue.Dequeue();
|
||||
|
||||
return items;
|
||||
}
|
||||
internalDequeueTcs = ResetToken(ref dequeueTcs);
|
||||
internalDequeueTcs = ResetToken(ref _dequeueTcs);
|
||||
}
|
||||
|
||||
await WaitAsync(internalDequeueTcs, cancellationToken).ConfigureAwait(false);
|
||||
@@ -265,12 +265,12 @@ namespace System.Collections.Generic
|
||||
while (true)
|
||||
{
|
||||
TaskCompletionSource<bool> internalDequeueTcs;
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
if (queue.Count > 0)
|
||||
return queue.Dequeue();
|
||||
if (_queue.Count > 0)
|
||||
return _queue.Dequeue();
|
||||
|
||||
internalDequeueTcs = ResetToken(ref dequeueTcs);
|
||||
internalDequeueTcs = ResetToken(ref _dequeueTcs);
|
||||
}
|
||||
|
||||
await WaitAsync(internalDequeueTcs, cancellationToken).ConfigureAwait(false);
|
||||
@@ -285,12 +285,12 @@ namespace System.Collections.Generic
|
||||
public async Task WaitAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
TaskCompletionSource<bool> internalAvailableTcs;
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
if (queue.Count > 0)
|
||||
if (_queue.Count > 0)
|
||||
return;
|
||||
|
||||
internalAvailableTcs = ResetToken(ref availableTcs);
|
||||
internalAvailableTcs = ResetToken(ref _availableTcs);
|
||||
}
|
||||
|
||||
await WaitAsync(internalAvailableTcs, cancellationToken).ConfigureAwait(false);
|
||||
@@ -347,10 +347,10 @@ namespace System.Collections.Generic
|
||||
/// <returns>true if item is successfully removed; otherwise, false. This method also returns false if item was not found in the <see cref="AsyncQueue{T}"/>.</returns>
|
||||
public bool Remove(T item)
|
||||
{
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
var copy = new Queue<T>(queue);
|
||||
queue.Clear();
|
||||
var copy = new Queue<T>(_queue);
|
||||
_queue.Clear();
|
||||
|
||||
bool found = false;
|
||||
int count = copy.Count;
|
||||
@@ -359,7 +359,7 @@ namespace System.Collections.Generic
|
||||
var element = copy.Dequeue();
|
||||
if (found)
|
||||
{
|
||||
queue.Enqueue(element);
|
||||
_queue.Enqueue(element);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -369,7 +369,7 @@ namespace System.Collections.Generic
|
||||
continue;
|
||||
}
|
||||
|
||||
queue.Enqueue(element);
|
||||
_queue.Enqueue(element);
|
||||
}
|
||||
|
||||
return found;
|
||||
@@ -382,19 +382,19 @@ namespace System.Collections.Generic
|
||||
/// <param name="collection">The objects to add to the <see cref="AsyncQueue{T}"/>.</param>
|
||||
public void Enqueue(IEnumerable<T> collection)
|
||||
{
|
||||
lock (queue)
|
||||
lock (_queue)
|
||||
{
|
||||
bool hasElements = false;
|
||||
foreach (var element in collection)
|
||||
{
|
||||
hasElements = true;
|
||||
queue.Enqueue(element);
|
||||
_queue.Enqueue(element);
|
||||
}
|
||||
|
||||
if (hasElements)
|
||||
{
|
||||
SetToken(dequeueTcs);
|
||||
SetToken(availableTcs);
|
||||
SetToken(_dequeueTcs);
|
||||
SetToken(_availableTcs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user