瀏覽代碼

add file cache

Luke Pulverenti 9 年之前
父節點
當前提交
894d87fabb
共有 2 個文件被更改,包括 17 次插入54 次删除
  1. 17 24
      MediaBrowser.Controller/Providers/DirectoryService.cs
  2. 0 30
      MediaBrowser.Providers/Manager/MetadataService.cs

+ 17 - 24
MediaBrowser.Controller/Providers/DirectoryService.cs

@@ -16,7 +16,10 @@ namespace MediaBrowser.Controller.Providers
         private readonly ConcurrentDictionary<string, Dictionary<string, FileSystemMetadata>> _cache =
         private readonly ConcurrentDictionary<string, Dictionary<string, FileSystemMetadata>> _cache =
             new ConcurrentDictionary<string, Dictionary<string, FileSystemMetadata>>(StringComparer.OrdinalIgnoreCase);
             new ConcurrentDictionary<string, Dictionary<string, FileSystemMetadata>>(StringComparer.OrdinalIgnoreCase);
 
 
-		public DirectoryService(ILogger logger, IFileSystem fileSystem)
+        private readonly ConcurrentDictionary<string, FileSystemMetadata> _fileCache =
+        new ConcurrentDictionary<string, FileSystemMetadata>(StringComparer.OrdinalIgnoreCase);
+
+        public DirectoryService(ILogger logger, IFileSystem fileSystem)
         {
         {
             _logger = logger;
             _logger = logger;
 			_fileSystem = fileSystem;
 			_fileSystem = fileSystem;
@@ -100,29 +103,19 @@ namespace MediaBrowser.Controller.Providers
 
 
         public FileSystemMetadata GetFile(string path)
         public FileSystemMetadata GetFile(string path)
         {
         {
-            return _fileSystem.GetFileInfo(path);
-            //var directory = Path.GetDirectoryName(path);
-
-            //if (string.IsNullOrWhiteSpace(directory))
-            //{
-            //    _logger.Debug("Parent path is null for {0}", path);
-            //    return null;
-            //}
-
-            //try
-            //{
-            //    var dict = GetFileSystemDictionary(directory, false);
-
-            //    FileSystemMetadata entry;
-            //    dict.TryGetValue(path, out entry);
-
-            //    return entry;
-            //}
-            //catch (Exception ex)
-            //{
-            //    _logger.ErrorException("Error in GetFileSystemDictionary. Directory: :{0}. Original path: {1}", ex, directory, path);
-            //    return null;
-            //}
+            FileSystemMetadata file;
+            if (!_fileCache.TryGetValue(path, out file))
+            {
+                file = _fileSystem.GetFileInfo(path);
+
+                if (file != null)
+                {
+                    _fileCache.TryAdd(path, file);
+                }
+            }
+
+            return file;
+            //return _fileSystem.GetFileInfo(path);
         }
         }
 
 
         public IEnumerable<FileSystemMetadata> GetDirectories(string path)
         public IEnumerable<FileSystemMetadata> GetDirectories(string path)

+ 0 - 30
MediaBrowser.Providers/Manager/MetadataService.cs

@@ -349,9 +349,6 @@ namespace MediaBrowser.Providers.Manager
 
 
             if (!runAllProviders)
             if (!runAllProviders)
             {
             {
-                // Avoid implicitly captured closure
-                var currentItem = item;
-
                 var providersWithChanges = providers
                 var providersWithChanges = providers
                     .Where(i =>
                     .Where(i =>
                     {
                     {
@@ -361,12 +358,6 @@ namespace MediaBrowser.Providers.Manager
                             return HasChanged(item, hasFileChangeMonitor, options.DirectoryService);
                             return HasChanged(item, hasFileChangeMonitor, options.DirectoryService);
                         }
                         }
 
 
-                        var hasChangeMonitor = i as IHasChangeMonitor;
-                        if (hasChangeMonitor != null)
-                        {
-                            return HasChanged(item, hasChangeMonitor, currentItem.DateLastSaved, options.DirectoryService);
-                        }
-
                         return false;
                         return false;
                     })
                     })
                     .ToList();
                     .ToList();
@@ -726,27 +717,6 @@ namespace MediaBrowser.Providers.Manager
                 return false;
                 return false;
             }
             }
         }
         }
-
-        private bool HasChanged(IHasMetadata item, IHasChangeMonitor changeMonitor, DateTime date, IDirectoryService directoryService)
-        {
-            try
-            {
-                var hasChanged = changeMonitor.HasChanged(item, directoryService, date);
-
-                //if (hasChanged)
-                //{
-                //    Logger.Debug("{0} reports change to {1} since {2}", changeMonitor.GetType().Name,
-                //        item.Path ?? item.Name, date);
-                //}
-
-                return hasChanged;
-            }
-            catch (Exception ex)
-            {
-                Logger.ErrorException("Error in {0}.HasChanged", ex, changeMonitor.GetType().Name);
-                return false;
-            }
-        }
     }
     }
 
 
     public class RefreshResult
     public class RefreshResult