From 874469d47633851f4da75ad8640bc47dcfa810ce Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Sun, 19 Aug 2012 12:54:41 -0400 Subject: Made xml fetching task-based --- .../Providers/FolderProviderFromXml.cs | 15 +++----- MediaBrowser.Controller/Xml/BaseItemXmlParser.cs | 43 ++++++++++++---------- 2 files changed, 30 insertions(+), 28 deletions(-) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs b/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs index 5ba02b38d7..14067dd202 100644 --- a/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs +++ b/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs @@ -14,17 +14,14 @@ namespace MediaBrowser.Controller.Providers return item is Folder; } - public override Task Fetch(BaseItem item, ItemResolveEventArgs args) + public async override Task Fetch(BaseItem item, ItemResolveEventArgs args) { - return Task.Run(() => - { - var metadataFile = args.GetFileByName("folder.xml"); + var metadataFile = args.GetFileByName("folder.xml"); - if (metadataFile.HasValue) - { - new FolderXmlParser().Fetch(item as Folder, metadataFile.Value.Key); - } - }); + if (metadataFile.HasValue) + { + await new FolderXmlParser().Fetch(item as Folder, metadataFile.Value.Key); + } } } } diff --git a/MediaBrowser.Controller/Xml/BaseItemXmlParser.cs b/MediaBrowser.Controller/Xml/BaseItemXmlParser.cs index eabbae8693..0e514b8b21 100644 --- a/MediaBrowser.Controller/Xml/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Xml/BaseItemXmlParser.cs @@ -4,6 +4,7 @@ using System.IO; using System.Linq; using System.Xml; using MediaBrowser.Model.Entities; +using System.Threading.Tasks; namespace MediaBrowser.Controller.Xml { @@ -16,33 +17,37 @@ namespace MediaBrowser.Controller.Xml /// /// Fetches metadata for an item from one xml file /// - public virtual void Fetch(T item, string metadataFile) + public Task Fetch(T item, string metadataFile) { - // Use XmlReader for best performance - using (XmlReader reader = XmlReader.Create(metadataFile)) + // Wrapping this for now until I have a chance to async the whole process + return Task.Run(() => { - reader.MoveToContent(); - - // Loop through each element - while (reader.Read()) + // Use XmlReader for best performance + using (XmlReader reader = XmlReader.Create(metadataFile)) { - if (reader.NodeType == XmlNodeType.Element) + reader.MoveToContent(); + + // Loop through each element + while (reader.Read()) { - FetchDataFromXmlNode(reader, item); + if (reader.NodeType == XmlNodeType.Element) + { + FetchDataFromXmlNode(reader, item); + } } } - } - // If dates weren't supplied in metadata, use values from the xml file - if (item.DateCreated == DateTime.MinValue) - { - item.DateCreated = File.GetCreationTime(metadataFile); - } + // If dates weren't supplied in metadata, use values from the xml file + if (item.DateCreated == DateTime.MinValue) + { + item.DateCreated = File.GetCreationTime(metadataFile); + } - if (item.DateModified == DateTime.MinValue) - { - item.DateModified = File.GetLastWriteTime(metadataFile); - } + if (item.DateModified == DateTime.MinValue) + { + item.DateModified = File.GetLastWriteTime(metadataFile); + } + }); } /// -- cgit v1.2.3