using Pf2e.Scrapper.Processors.Definitions;
namespace Pf2e.Scrapper.Helpers;
///
/// Класс для отслеживания прогресса обработки данных.
///
public class ProcessProgress : AbstractLogger
{
///
/// Прогресс обработки обработчиков .
///
public ProgressItem Processors { get; } = new();
///
/// Прогресс работы конкретного обработчика .
///
public ProgressItem Local { get; } = new();
///
/// Конструктор класса .
///
public ProcessProgress()
{
Processors.Update += Update;
Local.Update += Update;
}
///
/// Событие обновления
///
private void Update()
{
ProgressUpdate?.Invoke(this);
}
///
/// Событие сообщения.
///
/// Уровень сообщения.
///
public override void Message(LogLevel level, string message)
{
ProgressMessage?.Invoke(this, level, message);
}
///
/// Событие завершения процесса.
///
public void Complete()
{
ProgressComplete?.Invoke(this);
}
///
/// Делегат для события обновления прогресса.
///
/// Объект, вызвавший событие.
public delegate void ProgressUpdateDelegate(ProcessProgress sender);
///
/// Событие обновления прогресса.
///
public event ProgressUpdateDelegate? ProgressUpdate;
///
/// Событие завершения процесса.
///
public event ProgressUpdateDelegate? ProgressComplete;
///
/// Делегат для события сообщения прогресса.
///
/// Объект, вызвавший событие.
/// Уровень сообщения.
/// Сообщение.
public delegate void ProgressMessageDelegate(
ProcessProgress sender,
LogLevel level,
string message
);
///
/// Событие сообщения.
///
public event ProgressMessageDelegate? ProgressMessage;
}