From 8f024e81996b14a9e6a440a601d0f6c0694f7ab8 Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Mon, 20 Aug 2012 11:55:05 -0400 Subject: Fully async'd xml parsing process as well as added resolver and provider priorities --- MediaBrowser.Controller/Library/ItemController.cs | 39 +++++++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) (limited to 'MediaBrowser.Controller/Library/ItemController.cs') 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 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.WhenAll(tasks); - + // Sort them folder.Children = baseItemChildren.Where(i => i != null).OrderBy(f => { -- cgit v1.2.3