/// <inheritdoc /> public IFileInfo GetFileInfo(string subpath) { ExpiringFileInfo expiringFileInfo; var utcNow = UtcNow; if (_fileInfoCache.TryGetValue(subpath, out expiringFileInfo) && expiringFileInfo.ValidUntil > utcNow) { return(expiringFileInfo.FileInfo); } else { var fileInfo = _fileProvider.GetFileInfo(subpath); expiringFileInfo = new ExpiringFileInfo() { FileInfo = fileInfo, ValidUntil = _offset == TimeSpan.MaxValue ? DateTime.MaxValue : utcNow.Add(_offset), }; _fileInfoCache[subpath] = expiringFileInfo; return(fileInfo); } }
/// <inheritdoc /> public IFileInfo GetFileInfo([NotNull] string virtualPath) { IFileInfo fileInfo; ExpiringFileInfo expiringFileInfo; var utcNow = UtcNow; if (_fileInfoCache.TryGetValue(virtualPath, out expiringFileInfo) && expiringFileInfo.ValidUntil > utcNow) { fileInfo = expiringFileInfo.FileInfo; } else { _fileSystem.TryGetFileInfo(virtualPath, out fileInfo); expiringFileInfo = new ExpiringFileInfo() { FileInfo = fileInfo, ValidUntil = _offset == TimeSpan.MaxValue ? DateTime.MaxValue : utcNow.Add(_offset), }; _fileInfoCache.AddOrUpdate(virtualPath, expiringFileInfo, (a, b) => expiringFileInfo); } return(fileInfo); }
/// <inheritdoc /> public IFileInfo GetFileInfo([NotNull] string virtualPath) { IFileInfo fileInfo; ExpiringFileInfo expiringFileInfo; var utcNow = UtcNow; if (_fileInfoCache.TryGetValue(virtualPath, out expiringFileInfo) && expiringFileInfo.ValidUntil > utcNow) { fileInfo = expiringFileInfo.FileInfo; } else { FileSystem.TryGetFileInfo(virtualPath, out fileInfo); expiringFileInfo = new ExpiringFileInfo() { FileInfo = fileInfo, ValidUntil = _offset == TimeSpan.MaxValue ? DateTime.MaxValue : utcNow.Add(_offset), }; _fileInfoCache.AddOrUpdate(virtualPath, expiringFileInfo, (a, b) => expiringFileInfo); } return fileInfo; }