PiwigoDirectorySync/PiwigoDirectorySync/Commands/Scan/FileIndexer.cs

36 lines
1.0 KiB
C#

using System.Threading.Channels;
using NLog;
namespace PiwigoDirectorySync.Commands.Scan;
public class FileIndexer
{
private static readonly ILogger Logger = LogManager.GetCurrentClassLogger();
private readonly Channel<string> _fileQueue;
private readonly int _piwigoServerId;
public FileIndexer(Channel<string> fileQueue, int piwigoServerId)
{
_fileQueue = fileQueue ?? throw new ArgumentNullException(nameof(fileQueue));
_piwigoServerId = piwigoServerId;
}
public int TotalFilesScanned { get; private set; }
public async Task StartProcessingAsync(CancellationToken ct)
{
await foreach (var filePath in _fileQueue.Reader.ReadAllAsync(ct))
{
try
{
Logger.Info($"Indexing file {filePath}");
TotalFilesScanned++;
}
catch (Exception ex)
{
Logger.Error(ex, $"could not delete file {filePath}");
}
}
}
}