/// <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);
            }
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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;
        }