diff options
| author | LukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com> | 2012-08-20 11:55:05 -0400 |
|---|---|---|
| committer | LukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com> | 2012-08-20 11:55:05 -0400 |
| commit | 8f024e81996b14a9e6a440a601d0f6c0694f7ab8 (patch) | |
| tree | b7bb10bde396608e11c0bac9c4ed706508f1a003 /MediaBrowser.Controller/Library/ItemController.cs | |
| parent | 19a4dd83c21db931edf14a0ef547219ef93cdc84 (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.cs | 39 |
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 =>
{
|
