aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Library/ItemController.cs
diff options
context:
space:
mode:
authorLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-08-20 11:55:05 -0400
committerLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-08-20 11:55:05 -0400
commit8f024e81996b14a9e6a440a601d0f6c0694f7ab8 (patch)
treeb7bb10bde396608e11c0bac9c4ed706508f1a003 /MediaBrowser.Controller/Library/ItemController.cs
parent19a4dd83c21db931edf14a0ef547219ef93cdc84 (diff)
Fully async'd xml parsing process as well as added resolver and provider priorities
Diffstat (limited to 'MediaBrowser.Controller/Library/ItemController.cs')
-rw-r--r--MediaBrowser.Controller/Library/ItemController.cs39
1 files changed, 36 insertions, 3 deletions
diff --git a/MediaBrowser.Controller/Library/ItemController.cs b/MediaBrowser.Controller/Library/ItemController.cs
index eb767d9a1..0f9b859b6 100644
--- a/MediaBrowser.Controller/Library/ItemController.cs
+++ b/MediaBrowser.Controller/Library/ItemController.cs
@@ -59,8 +59,8 @@ namespace MediaBrowser.Controller.Library
private async Task<BaseItem> ResolveItem(ItemResolveEventArgs args)
{
- // If that didn't pan out, try the slow ones
- foreach (IBaseItemResolver resolver in Kernel.Instance.EntityResolvers)
+ // Try first priority resolvers
+ foreach (IBaseItemResolver resolver in Kernel.Instance.EntityResolvers.Where(p => p.Priority == ResolverPriority.First))
{
var item = await resolver.ResolvePath(args);
@@ -70,6 +70,39 @@ namespace MediaBrowser.Controller.Library
}
}
+ // Try second priority resolvers
+ foreach (IBaseItemResolver resolver in Kernel.Instance.EntityResolvers.Where(p => p.Priority == ResolverPriority.Second))
+ {
+ var item = await resolver.ResolvePath(args);
+
+ if (item != null)
+ {
+ return item;
+ }
+ }
+
+ // Try third priority resolvers
+ foreach (IBaseItemResolver resolver in Kernel.Instance.EntityResolvers.Where(p => p.Priority == ResolverPriority.Third))
+ {
+ var item = await resolver.ResolvePath(args);
+
+ if (item != null)
+ {
+ return item;
+ }
+ }
+
+ // Try last priority resolvers
+ foreach (IBaseItemResolver resolver in Kernel.Instance.EntityResolvers.Where(p => p.Priority == ResolverPriority.Last))
+ {
+ var item = await resolver.ResolvePath(args);
+
+ if (item != null)
+ {
+ return item;
+ }
+ }
+
return null;
}
@@ -153,7 +186,7 @@ namespace MediaBrowser.Controller.Library
}
BaseItem[] baseItemChildren = await Task<BaseItem>.WhenAll(tasks);
-
+
// Sort them
folder.Children = baseItemChildren.Where(i => i != null).OrderBy(f =>
{