public Task <FileExistenceResult> CheckFileExistsAsync(AbsolutePath path, TimeSpan timeout, CancellationToken cancellationToken) { FileExistenceTimespans.AddOrUpdate( path, _ => { var queue = new ConcurrentQueue <TimeSpan>(); queue.Enqueue(timeout); return(queue); }, (_, queue) => { queue.Enqueue(timeout); return(queue); }); if (FileExistenceByReturnCode.TryGetValue(path, out var resultQueue) && resultQueue.TryDequeue(out var result)) { return(Task.FromResult(new FileExistenceResult(result))); } if (File.Exists(path.Path)) { return(Task.FromResult(new FileExistenceResult(FileExistenceResult.ResultCode.FileExists))); } return(Task.FromResult(new FileExistenceResult(FileExistenceResult.ResultCode.Error))); }
public int GetExistenceCheckCount(AbsolutePath path) { if (FileExistenceTimespans.TryGetValue(path, out var existenceCheckTimespans)) { return(existenceCheckTimespans.Count); } return(0); }