diff options
| author | LukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com> | 2012-08-20 19:53:32 -0400 |
|---|---|---|
| committer | LukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com> | 2012-08-20 19:53:32 -0400 |
| commit | 758d18a652a157240bd80e9e2db7b47688ba3d3b (patch) | |
| tree | 7bb579872bf46ffee47261bc4257220a58eaf995 /MediaBrowser.Controller/Resolvers/BaseItemResolver.cs | |
| parent | 6fbeee841f5c5f77e0a309a8fa6736b31b7210ec (diff) | |
Switched to low-level io methods for better performance
Diffstat (limited to 'MediaBrowser.Controller/Resolvers/BaseItemResolver.cs')
| -rw-r--r-- | MediaBrowser.Controller/Resolvers/BaseItemResolver.cs | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs b/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs index 4f6cc90cfd..acaaf32294 100644 --- a/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs +++ b/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs @@ -3,6 +3,8 @@ using System.IO; using System.Threading.Tasks;
using MediaBrowser.Controller.Events;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Controller.IO;
+using System.Collections.Generic;
namespace MediaBrowser.Controller.Resolvers
{
@@ -55,7 +57,7 @@ namespace MediaBrowser.Controller.Resolvers EnsureName(item);
// Make sure DateCreated and DateModified have values
- EnsureDates(item);
+ EnsureDates(item, args);
}
return item;
@@ -74,18 +76,33 @@ namespace MediaBrowser.Controller.Resolvers /// <summary>
/// Ensures DateCreated and DateModified have values
/// </summary>
- private void EnsureDates(T item)
+ private void EnsureDates(T item, ItemResolveEventArgs args)
{
- // If the subclass didn't supply dates, add them here
- if (item.DateCreated == DateTime.MinValue)
+ if (!Path.IsPathRooted(item.Path))
{
- item.DateCreated = Path.IsPathRooted(item.Path) ? File.GetCreationTime(item.Path) : DateTime.Now;
+ return;
}
- if (item.DateModified == DateTime.MinValue)
+ WIN32_FIND_DATA fileData = args.FileData;
+
+ // See if a different path came out of the resolver than what went in
+ if (!args.Path.Equals(item.Path, StringComparison.OrdinalIgnoreCase))
{
- item.DateModified = Path.IsPathRooted(item.Path) ? File.GetLastWriteTime(item.Path) : DateTime.Now;
+ KeyValuePair<string, WIN32_FIND_DATA>? childData = args.GetFileSystemEntry(item.Path, null);
+
+ if (childData != null)
+ {
+ fileData = childData.Value.Value;
+ }
+ else
+ {
+ fileData = FileData.GetFileData(item.Path);
+ }
}
+
+ item.DateCreated = fileData.CreationTime;
+
+ item.DateModified = fileData.LastWriteTime;
}
}
|
