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 Task <FileExistenceResult> CheckFileExistsAsync(OperationContext context, ContentLocation sourceLocation) { var path = PathUtilities.GetContentPath(sourceLocation.Machine.Path, sourceLocation.Hash); 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))); }