36 lines
1.0 KiB
C#
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}");
|
|
}
|
|
}
|
|
}
|
|
} |