From fbf8cc833c441de8890998600be044296acfc783 Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Tue, 21 Aug 2012 22:50:59 -0400 Subject: a few more async optimizations --- MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs | 17 +++++------- MediaBrowser.Api/HttpHandlers/GenreHandler.cs | 6 ++--- MediaBrowser.Api/HttpHandlers/GenresHandler.cs | 6 ++--- MediaBrowser.Api/HttpHandlers/ImageHandler.cs | 26 +++++++++--------- MediaBrowser.Api/HttpHandlers/ItemHandler.cs | 4 +-- MediaBrowser.Api/HttpHandlers/ItemListHandler.cs | 6 ++--- MediaBrowser.Api/HttpHandlers/PersonHandler.cs | 6 ++--- .../HttpHandlers/PluginConfigurationHandler.cs | 9 +++---- MediaBrowser.Api/HttpHandlers/PluginsHandler.cs | 31 ++++++++++------------ MediaBrowser.Api/HttpHandlers/StudioHandler.cs | 6 ++--- MediaBrowser.Api/HttpHandlers/StudiosHandler.cs | 6 ++--- MediaBrowser.Api/HttpHandlers/UsersHandler.cs | 5 +--- MediaBrowser.Api/HttpHandlers/YearHandler.cs | 6 ++--- MediaBrowser.Api/HttpHandlers/YearsHandler.cs | 6 ++--- 14 files changed, 65 insertions(+), 75 deletions(-) (limited to 'MediaBrowser.Api/HttpHandlers') diff --git a/MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs b/MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs index d2dbd699d3..7d9200b111 100644 --- a/MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs @@ -92,10 +92,7 @@ namespace MediaBrowser.Api.HttpHandlers public override Task GetContentType() { - return Task.Run(() => - { - return MimeTypes.GetMimeType("." + GetConversionOutputFormat()); - }); + return Task.FromResult(MimeTypes.GetMimeType("." + GetConversionOutputFormat())); } public override bool ShouldCompressResponse(string contentType) @@ -103,17 +100,17 @@ namespace MediaBrowser.Api.HttpHandlers return false; } - public override async Task ProcessRequest(HttpListenerContext ctx) + public override Task ProcessRequest(HttpListenerContext ctx) { HttpListenerContext = ctx; if (!RequiresConversion()) { - await new StaticFileHandler() { Path = LibraryItem.Path }.ProcessRequest(ctx); + return new StaticFileHandler() { Path = LibraryItem.Path }.ProcessRequest(ctx); } else { - await base.ProcessRequest(ctx); + return base.ProcessRequest(ctx); } } @@ -180,15 +177,15 @@ namespace MediaBrowser.Api.HttpHandlers // If we ever decide to disable the ffmpeg log then you must uncomment the below line. //process.BeginErrorReadLine(); - Task debugLogTask = Task.Run(async () => { await process.StandardError.BaseStream.CopyToAsync(logStream); }); + Task debugLogTask = process.StandardError.BaseStream.CopyToAsync(logStream); - await process.StandardOutput.BaseStream.CopyToAsync(stream); + await process.StandardOutput.BaseStream.CopyToAsync(stream).ConfigureAwait(false); process.WaitForExit(); Logger.LogInfo("FFMpeg exited with code " + process.ExitCode); - await debugLogTask; + await debugLogTask.ConfigureAwait(false); } catch (Exception ex) { diff --git a/MediaBrowser.Api/HttpHandlers/GenreHandler.cs b/MediaBrowser.Api/HttpHandlers/GenreHandler.cs index c4198b0288..e9e5c41f45 100644 --- a/MediaBrowser.Api/HttpHandlers/GenreHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/GenreHandler.cs @@ -14,7 +14,7 @@ namespace MediaBrowser.Api.HttpHandlers /// public class GenreHandler : BaseJsonHandler> { - protected override async Task> GetObjectToSerialize() + protected override Task> GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; Guid userId = Guid.Parse(QueryString["userid"]); @@ -22,7 +22,7 @@ namespace MediaBrowser.Api.HttpHandlers string name = QueryString["name"]; - return await GetGenre(parent, user, name); + return GetGenre(parent, user, name); } /// @@ -46,7 +46,7 @@ namespace MediaBrowser.Api.HttpHandlers // Get the original entity so that we can also supply the PrimaryImagePath return new IBNItem() { - Item = await Kernel.Instance.ItemController.GetGenre(name), + Item = await Kernel.Instance.ItemController.GetGenre(name).ConfigureAwait(false), BaseItemCount = count }; } diff --git a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs index cd68f1eaa9..8ac30043ef 100644 --- a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs @@ -11,13 +11,13 @@ namespace MediaBrowser.Api.HttpHandlers { public class GenresHandler : BaseJsonHandler>> { - protected override async Task>> GetObjectToSerialize() + protected override Task>> GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; Guid userId = Guid.Parse(QueryString["userid"]); User user = Kernel.Instance.Users.First(u => u.Id == userId); - return await GetAllGenres(parent, user); + return GetAllGenres(parent, user); } /// @@ -53,7 +53,7 @@ namespace MediaBrowser.Api.HttpHandlers } } - IEnumerable entities = await Task.WhenAll(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetGenre(key); })); + IEnumerable entities = await Task.WhenAll(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetGenre(key); })).ConfigureAwait(false); return entities.Select(e => new IBNItem() { Item = e, BaseItemCount = data[e.Name] }); } diff --git a/MediaBrowser.Api/HttpHandlers/ImageHandler.cs b/MediaBrowser.Api/HttpHandlers/ImageHandler.cs index 39a115cefb..48c67eeef2 100644 --- a/MediaBrowser.Api/HttpHandlers/ImageHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ImageHandler.cs @@ -29,28 +29,28 @@ namespace MediaBrowser.Api.HttpHandlers if (!string.IsNullOrEmpty(personName)) { - return (await Kernel.Instance.ItemController.GetPerson(personName)).PrimaryImagePath; + return (await Kernel.Instance.ItemController.GetPerson(personName).ConfigureAwait(false)).PrimaryImagePath; } string genreName = QueryString["genre"]; if (!string.IsNullOrEmpty(genreName)) { - return (await Kernel.Instance.ItemController.GetGenre(genreName)).PrimaryImagePath; + return (await Kernel.Instance.ItemController.GetGenre(genreName).ConfigureAwait(false)).PrimaryImagePath; } string year = QueryString["year"]; if (!string.IsNullOrEmpty(year)) { - return (await Kernel.Instance.ItemController.GetYear(int.Parse(year))).PrimaryImagePath; + return (await Kernel.Instance.ItemController.GetYear(int.Parse(year)).ConfigureAwait(false)).PrimaryImagePath; } string studio = QueryString["studio"]; if (!string.IsNullOrEmpty(studio)) { - return (await Kernel.Instance.ItemController.GetStudio(studio)).PrimaryImagePath; + return (await Kernel.Instance.ItemController.GetStudio(studio).ConfigureAwait(false)).PrimaryImagePath; } BaseItem item = ApiService.GetItemById(QueryString["id"]); @@ -64,7 +64,7 @@ namespace MediaBrowser.Api.HttpHandlers private Stream _SourceStream = null; private async Task GetSourceStream() { - await EnsureSourceStream(); + await EnsureSourceStream().ConfigureAwait(false); return _SourceStream; } @@ -75,7 +75,7 @@ namespace MediaBrowser.Api.HttpHandlers { try { - _SourceStream = File.OpenRead(await GetImagePath()); + _SourceStream = File.OpenRead(await GetImagePath().ConfigureAwait(false)); } catch (FileNotFoundException ex) { @@ -101,14 +101,14 @@ namespace MediaBrowser.Api.HttpHandlers public async override Task GetContentType() { - await EnsureSourceStream(); + await EnsureSourceStream().ConfigureAwait(false); - if (await GetSourceStream() == null) + if (await GetSourceStream().ConfigureAwait(false) == null) { return null; } - return MimeTypes.GetMimeType(await GetImagePath()); + return MimeTypes.GetMimeType(await GetImagePath().ConfigureAwait(false)); } public override TimeSpan CacheDuration @@ -121,14 +121,14 @@ namespace MediaBrowser.Api.HttpHandlers protected async override Task GetLastDateModified() { - await EnsureSourceStream(); + await EnsureSourceStream().ConfigureAwait(false); - if (await GetSourceStream() == null) + if (await GetSourceStream().ConfigureAwait(false) == null) { return null; } - return File.GetLastWriteTime(await GetImagePath()); + return File.GetLastWriteTime(await GetImagePath().ConfigureAwait(false)); } private int? Height @@ -223,7 +223,7 @@ namespace MediaBrowser.Api.HttpHandlers protected override async Task WriteResponseToOutputStream(Stream stream) { - ImageProcessor.ProcessImage(await GetSourceStream(), stream, Width, Height, MaxWidth, MaxHeight, Quality); + ImageProcessor.ProcessImage(await GetSourceStream().ConfigureAwait(false), stream, Width, Height, MaxWidth, MaxHeight, Quality); } private string GetImagePathFromTypes(BaseItem item, ImageType imageType, int imageIndex) diff --git a/MediaBrowser.Api/HttpHandlers/ItemHandler.cs b/MediaBrowser.Api/HttpHandlers/ItemHandler.cs index ac27633b7b..4f2a9c68e5 100644 --- a/MediaBrowser.Api/HttpHandlers/ItemHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ItemHandler.cs @@ -10,7 +10,7 @@ namespace MediaBrowser.Api.HttpHandlers { public class ItemHandler : BaseJsonHandler { - protected async override Task GetObjectToSerialize() + protected override Task GetObjectToSerialize() { Guid userId = Guid.Parse(QueryString["userid"]); User user = Kernel.Instance.Users.First(u => u.Id == userId); @@ -22,7 +22,7 @@ namespace MediaBrowser.Api.HttpHandlers return null; } - return await ApiService.GetDTOBaseItem(item, user); + return ApiService.GetDTOBaseItem(item, user); } protected virtual BaseItem ItemToSerialize diff --git a/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs b/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs index 6e4a420813..9d5e3eb580 100644 --- a/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs @@ -9,13 +9,13 @@ using MediaBrowser.Model.Entities; namespace MediaBrowser.Api.HttpHandlers { - public class ItemListHandler : BaseJsonHandler> + public class ItemListHandler : BaseJsonHandler { - protected override async Task> GetObjectToSerialize() + protected override Task GetObjectToSerialize() { User user = Kernel.Instance.Users.First(u => u.Id == UserId); - return await Task.WhenAll(ItemsToSerialize.Select(i => + return Task.WhenAll(ItemsToSerialize.Select(i => { return ApiService.GetDTOBaseItem(i, user, includeChildren: false, includePeople: false); })); diff --git a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs index f095a3a47c..b144c0bdf4 100644 --- a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs @@ -14,7 +14,7 @@ namespace MediaBrowser.Api.HttpHandlers /// public class PersonHandler : BaseJsonHandler> { - protected async override Task> GetObjectToSerialize() + protected override Task> GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; Guid userId = Guid.Parse(QueryString["userid"]); @@ -22,7 +22,7 @@ namespace MediaBrowser.Api.HttpHandlers string name = QueryString["name"]; - return await GetPerson(parent, user, name); + return GetPerson(parent, user, name); } /// @@ -46,7 +46,7 @@ namespace MediaBrowser.Api.HttpHandlers // Get the original entity so that we can also supply the PrimaryImagePath return new IBNItem() { - Item = await Kernel.Instance.ItemController.GetPerson(name), + Item = await Kernel.Instance.ItemController.GetPerson(name).ConfigureAwait(false), BaseItemCount = count }; } diff --git a/MediaBrowser.Api/HttpHandlers/PluginConfigurationHandler.cs b/MediaBrowser.Api/HttpHandlers/PluginConfigurationHandler.cs index 109440e982..fbc16109d8 100644 --- a/MediaBrowser.Api/HttpHandlers/PluginConfigurationHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/PluginConfigurationHandler.cs @@ -11,12 +11,11 @@ namespace MediaBrowser.Api.HttpHandlers { protected override Task GetObjectToSerialize() { - return Task.Run(() => - { - string pluginName = QueryString["name"]; + string pluginName = QueryString["name"]; - return Kernel.Instance.Plugins.First(p => p.Name.Equals(pluginName, StringComparison.OrdinalIgnoreCase)).Configuration; - }); + BasePluginConfiguration config = Kernel.Instance.Plugins.First(p => p.Name.Equals(pluginName, StringComparison.OrdinalIgnoreCase)).Configuration; + + return Task.FromResult(config); } } } diff --git a/MediaBrowser.Api/HttpHandlers/PluginsHandler.cs b/MediaBrowser.Api/HttpHandlers/PluginsHandler.cs index f451832dd4..1cb4e95f76 100644 --- a/MediaBrowser.Api/HttpHandlers/PluginsHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/PluginsHandler.cs @@ -14,27 +14,24 @@ namespace MediaBrowser.Api.HttpHandlers { protected override Task> GetObjectToSerialize() { - return Task.Run(() => + var plugins = Kernel.Instance.Plugins.Select(p => { - var plugins = Kernel.Instance.Plugins.Select(p => + return new PluginInfo() { - return new PluginInfo() - { - Path = p.Path, - Name = p.Name, - Enabled = p.Enabled, - DownloadToUI = p.DownloadToUI, - Version = p.Version - }; - }); + Path = p.Path, + Name = p.Name, + Enabled = p.Enabled, + DownloadToUI = p.DownloadToUI, + Version = p.Version + }; + }); - if (QueryString["uionly"] == "1") - { - plugins = plugins.Where(p => p.DownloadToUI); - } + if (QueryString["uionly"] == "1") + { + plugins = plugins.Where(p => p.DownloadToUI); + } - return plugins; - }); + return Task.FromResult>(plugins); } } } diff --git a/MediaBrowser.Api/HttpHandlers/StudioHandler.cs b/MediaBrowser.Api/HttpHandlers/StudioHandler.cs index b44970ea50..727237882b 100644 --- a/MediaBrowser.Api/HttpHandlers/StudioHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/StudioHandler.cs @@ -14,7 +14,7 @@ namespace MediaBrowser.Api.HttpHandlers /// public class StudioHandler : BaseJsonHandler> { - protected async override Task> GetObjectToSerialize() + protected override Task> GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; Guid userId = Guid.Parse(QueryString["userid"]); @@ -22,7 +22,7 @@ namespace MediaBrowser.Api.HttpHandlers string name = QueryString["name"]; - return await GetStudio(parent, user, name); + return GetStudio(parent, user, name); } /// @@ -46,7 +46,7 @@ namespace MediaBrowser.Api.HttpHandlers // Get the original entity so that we can also supply the PrimaryImagePath return new IBNItem() { - Item = await Kernel.Instance.ItemController.GetStudio(name), + Item = await Kernel.Instance.ItemController.GetStudio(name).ConfigureAwait(false), BaseItemCount = count }; } diff --git a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs index d379b45fb4..7e85e5558c 100644 --- a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs @@ -11,13 +11,13 @@ namespace MediaBrowser.Api.HttpHandlers { public class StudiosHandler : BaseJsonHandler>> { - protected override async Task>> GetObjectToSerialize() + protected override Task>> GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; Guid userId = Guid.Parse(QueryString["userid"]); User user = Kernel.Instance.Users.First(u => u.Id == userId); - return await GetAllStudios(parent, user); + return GetAllStudios(parent, user); } /// @@ -53,7 +53,7 @@ namespace MediaBrowser.Api.HttpHandlers } } - IEnumerable entities = await Task.WhenAll(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetStudio(key); })); + IEnumerable entities = await Task.WhenAll(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetStudio(key); })).ConfigureAwait(false); return entities.Select(e => new IBNItem() { Item = e, BaseItemCount = data[e.Name] }); } diff --git a/MediaBrowser.Api/HttpHandlers/UsersHandler.cs b/MediaBrowser.Api/HttpHandlers/UsersHandler.cs index 1368735740..ad9ffec980 100644 --- a/MediaBrowser.Api/HttpHandlers/UsersHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/UsersHandler.cs @@ -10,10 +10,7 @@ namespace MediaBrowser.Api.HttpHandlers { protected override Task> GetObjectToSerialize() { - return Task.Run(() => - { - return Kernel.Instance.Users; - }); + return Task.FromResult>(Kernel.Instance.Users); } } } diff --git a/MediaBrowser.Api/HttpHandlers/YearHandler.cs b/MediaBrowser.Api/HttpHandlers/YearHandler.cs index dfde600e78..5e31c9689f 100644 --- a/MediaBrowser.Api/HttpHandlers/YearHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/YearHandler.cs @@ -14,7 +14,7 @@ namespace MediaBrowser.Api.HttpHandlers /// public class YearHandler : BaseJsonHandler> { - protected override async Task> GetObjectToSerialize() + protected override Task> GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; Guid userId = Guid.Parse(QueryString["userid"]); @@ -22,7 +22,7 @@ namespace MediaBrowser.Api.HttpHandlers string year = QueryString["year"]; - return await GetYear(parent, user, int.Parse(year)); + return GetYear(parent, user, int.Parse(year)); } /// @@ -46,7 +46,7 @@ namespace MediaBrowser.Api.HttpHandlers // Get the original entity so that we can also supply the PrimaryImagePath return new IBNItem() { - Item = await Kernel.Instance.ItemController.GetYear(year), + Item = await Kernel.Instance.ItemController.GetYear(year).ConfigureAwait(false), BaseItemCount = count }; } diff --git a/MediaBrowser.Api/HttpHandlers/YearsHandler.cs b/MediaBrowser.Api/HttpHandlers/YearsHandler.cs index 6ce087f857..dcbbf6150e 100644 --- a/MediaBrowser.Api/HttpHandlers/YearsHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/YearsHandler.cs @@ -11,13 +11,13 @@ namespace MediaBrowser.Api.HttpHandlers { public class YearsHandler : BaseJsonHandler>> { - protected override async Task>> GetObjectToSerialize() + protected override Task>> GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; Guid userId = Guid.Parse(QueryString["userid"]); User user = Kernel.Instance.Users.First(u => u.Id == userId); - return await GetAllYears(parent, user); + return GetAllYears(parent, user); } /// @@ -50,7 +50,7 @@ namespace MediaBrowser.Api.HttpHandlers } } - IEnumerable entities = await Task.WhenAll(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetYear(key); })); + IEnumerable entities = await Task.WhenAll(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetYear(key); })).ConfigureAwait(false); return entities.Select(e => new IBNItem() { Item = e, BaseItemCount = data[int.Parse(e.Name)] }); } -- cgit v1.2.3