using System;
using System.Collections.Generic;
namespace RGB.NET.Core;
///
/// Represents a generic update queue.
///
/// The identifier used to identify the data processed by this queue.
/// The type of the data processed by this queue.
public interface IUpdateQueue : IReferenceCounting, IDisposable
where TIdentifier : notnull
{
///
/// Gets a bool indicating if the queue requires a flush of all data due to an internal error.
///
bool RequiresFlush { get; }
///
/// Sets or merges the provided data set in the current dataset and notifies the trigger that there is new data available.
///
/// The set of data.
// ReSharper disable once MemberCanBeProtected.Global
void SetData(IEnumerable<(TIdentifier, TData)> dataSet);
///
/// Resets the current data set.
///
void Reset();
}
///
/// Represents a generic update queue processing -data using -identifiers.
///
public interface IUpdateQueue : IUpdateQueue