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;
}