Esempio n. 1
0
        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)));
        }
Esempio n. 2
0
        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)));
        }