using System.Collections.Concurrent; using System.Diagnostics.CodeAnalysis; using ConsoleApp2.Entities; using Microsoft.Extensions.Logging; namespace ConsoleApp2.Services; public class DataRecordQueue { /// /// Indicate that the queue is completed adding. /// public bool IsCompletedAdding { get; private set; } /// /// Remark that the queue is completed for adding and empty; /// public bool IsCompleted => IsCompletedAdding && _queue.IsEmpty; private readonly ConcurrentQueue _queue; public DataRecordQueue() { _queue = new ConcurrentQueue(); } public DataRecordQueue(IEnumerable records) { _queue = new ConcurrentQueue(records); } /// public void Enqueue(DataRecord item) { _queue.Enqueue(item); } /// public bool TryDequeue([MaybeNullWhen(false)] out DataRecord result) { return _queue.TryDequeue(out result); } /// public bool TryPeek([MaybeNullWhen(false)] out DataRecord result) { return _queue.TryPeek(out result); } /// public int Count => _queue.Count; /// public bool IsEmpty => _queue.IsEmpty; /// /// Indicate that the queue is completed adding. /// public void CompleteAdding() => IsCompletedAdding = true; }