using AsbCloudApp.Data; using System.Collections.Generic; namespace AsbCloudApp.Services { /// <summary> /// Делегат обновления состояния задачи /// </summary> /// <param name="job"></param> public delegate void OnJobProgressDelagate(JobDto job); /// <summary> /// Сервис прореживания архива БД. /// Удаляет часть телеметрии. /// Понижает частоту записей в БД с 1 запись за 1 сек до 1 запись за N сек. /// </summary> public interface IReduceSamplingService { /// <summary> /// Получить все задания. Задания удаляются минимум через 10 сек после выполнения, возможно позднее. /// </summary> /// <returns>Enumerable of JobDto or empty</returns> IEnumerable<JobDto> GetJobs(); /// <summary> /// Получить состояние определенной задачи /// </summary> /// <param name="idTelemetry"></param> /// <returns></returns> JobDto? GetOrDefaultState(int idTelemetry); /// <summary> /// Создать задачу прореживанию архива и добавить её в очередь на выполнение /// </summary> /// <param name="idTelemetry">телеметрия для прореживания</param> /// <param name="onProgress">колбек процесса выполнения</param> /// <param name="jobDto">созданная задача или задача из очереди</param> /// <returns>задача добавлена == true</returns> bool TryEnqueueRediceSamplingJob(int idTelemetry, OnJobProgressDelagate onProgress, out JobDto jobDto); } }