IPRBackgroundTaskMetadata

using PRTelegramBot.Core;

namespace PRTelegramBot.BackgroundTasks.Interfaces
{
    /// <summary>
    /// Интерфейс метаданных фоновой задачи.
    /// Содержит информацию, необходимую для планирования и управления выполнением задачи
    /// без описания её бизнес-логики.
    /// </summary>
    public interface IPRBackgroundTaskMetadata
    {
        /// <summary>
        /// Идентификаторы ботов, для которых предназначена фоновая задача.
        /// Необязательный параметр.
        /// Используется для разграничения фоновых задач для разных ботов при работе через DI.
        /// Пустая коллекция или наличие значения <see cref="PRConstants.ALL_BOTS_ID"/>
        /// означает, что задача применяется ко всем ботам.
        /// </summary>
        HashSet<long> BotIds { get; }

        /// <summary>
        /// Уникальный идентификатор фоновой задачи.
        /// Используется для сопоставления метаданных и реализации задачи.
        /// </summary>
        Guid Id { get; }

        /// <summary>
        /// Уникальное имя фоновой задачи.
        /// Используется для логирования, диагностики и идентификации задачи.
        /// </summary>
        string Name { get; }

        /// <summary>
        /// Задержка перед первым запуском фоновой задачи в секундах.
        /// Значение <c>null</c> или значение меньше либо равное 0 означает немедленный запуск.
        /// </summary>
        int? InitialDelaySeconds { get; }

        /// <summary>
        /// Интервал повторного выполнения фоновой задачи в секундах.
        /// Минимальный интервал повторения всегда будет 1 секунда.
        /// </summary>
        int? RepeatSeconds { get; }

        /// <summary>
        /// Максимальное количество запусков фоновой задачи
        /// (включая успешные и неуспешные попытки).
        /// Значение <c>null</c> или <c>-1</c> означает неограниченное количество запусков.
        /// </summary>
        int? MaxRepeatCount { get; }

        /// <summary>
        /// Максимальное количество попыток выполнения фоновой задачи при ошибках
        /// (включая первый запуск).
        /// Значение <c>null</c> или <c>-1</c> означает отсутствие ограничения.
        /// Значение 1 означает однократное выполнение без повторных попыток при ошибке.
        /// </summary>
        int? MaxErrorAttempts { get; }
    }
}

Last updated