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