mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-31 21:08:27 +01:00
a few more async optimizations
This commit is contained in:
parent
1c5f728ec2
commit
fbf8cc833c
@@ -92,10 +92,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
|
||||
public override Task<string> GetContentType()
|
||||
{
|
||||
return Task.Run(() =>
|
||||
{
|
||||
return MimeTypes.GetMimeType("." + GetConversionOutputFormat());
|
||||
});
|
||||
return Task.FromResult<string>(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)
|
||||
{
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
/// </summary>
|
||||
public class GenreHandler : BaseJsonHandler<IBNItem<Genre>>
|
||||
{
|
||||
protected override async Task<IBNItem<Genre>> GetObjectToSerialize()
|
||||
protected override Task<IBNItem<Genre>> 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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -46,7 +46,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
// Get the original entity so that we can also supply the PrimaryImagePath
|
||||
return new IBNItem<Genre>()
|
||||
{
|
||||
Item = await Kernel.Instance.ItemController.GetGenre(name),
|
||||
Item = await Kernel.Instance.ItemController.GetGenre(name).ConfigureAwait(false),
|
||||
BaseItemCount = count
|
||||
};
|
||||
}
|
||||
|
||||
@@ -11,13 +11,13 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
{
|
||||
public class GenresHandler : BaseJsonHandler<IEnumerable<IBNItem<Genre>>>
|
||||
{
|
||||
protected override async Task<IEnumerable<IBNItem<Genre>>> GetObjectToSerialize()
|
||||
protected override Task<IEnumerable<IBNItem<Genre>>> 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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -53,7 +53,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerable<Genre> entities = await Task.WhenAll<Genre>(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetGenre(key); }));
|
||||
IEnumerable<Genre> entities = await Task.WhenAll<Genre>(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetGenre(key); })).ConfigureAwait(false);
|
||||
|
||||
return entities.Select(e => new IBNItem<Genre>() { Item = e, BaseItemCount = data[e.Name] });
|
||||
}
|
||||
|
||||
@@ -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<Stream> 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<string> 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<DateTime?> 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)
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
{
|
||||
public class ItemHandler : BaseJsonHandler<DTOBaseItem>
|
||||
{
|
||||
protected async override Task<DTOBaseItem> GetObjectToSerialize()
|
||||
protected override Task<DTOBaseItem> 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
|
||||
|
||||
@@ -9,13 +9,13 @@ using MediaBrowser.Model.Entities;
|
||||
|
||||
namespace MediaBrowser.Api.HttpHandlers
|
||||
{
|
||||
public class ItemListHandler : BaseJsonHandler<IEnumerable<DTOBaseItem>>
|
||||
public class ItemListHandler : BaseJsonHandler<DTOBaseItem[]>
|
||||
{
|
||||
protected override async Task<IEnumerable<DTOBaseItem>> GetObjectToSerialize()
|
||||
protected override Task<DTOBaseItem[]> GetObjectToSerialize()
|
||||
{
|
||||
User user = Kernel.Instance.Users.First(u => u.Id == UserId);
|
||||
|
||||
return await Task.WhenAll<DTOBaseItem>(ItemsToSerialize.Select(i =>
|
||||
return Task.WhenAll<DTOBaseItem>(ItemsToSerialize.Select(i =>
|
||||
{
|
||||
return ApiService.GetDTOBaseItem(i, user, includeChildren: false, includePeople: false);
|
||||
}));
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
/// </summary>
|
||||
public class PersonHandler : BaseJsonHandler<IBNItem<Person>>
|
||||
{
|
||||
protected async override Task<IBNItem<Person>> GetObjectToSerialize()
|
||||
protected override Task<IBNItem<Person>> 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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -46,7 +46,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
// Get the original entity so that we can also supply the PrimaryImagePath
|
||||
return new IBNItem<Person>()
|
||||
{
|
||||
Item = await Kernel.Instance.ItemController.GetPerson(name),
|
||||
Item = await Kernel.Instance.ItemController.GetPerson(name).ConfigureAwait(false),
|
||||
BaseItemCount = count
|
||||
};
|
||||
}
|
||||
|
||||
@@ -11,12 +11,11 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
{
|
||||
protected override Task<BasePluginConfiguration> 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<BasePluginConfiguration>(config);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,27 +14,24 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
{
|
||||
protected override Task<IEnumerable<PluginInfo>> 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
|
||||
};
|
||||
});
|
||||
|
||||
if (QueryString["uionly"] == "1")
|
||||
{
|
||||
plugins = plugins.Where(p => p.DownloadToUI);
|
||||
}
|
||||
|
||||
return plugins;
|
||||
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);
|
||||
}
|
||||
|
||||
return Task.FromResult<IEnumerable<PluginInfo>>(plugins);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
/// </summary>
|
||||
public class StudioHandler : BaseJsonHandler<IBNItem<Studio>>
|
||||
{
|
||||
protected async override Task<IBNItem<Studio>> GetObjectToSerialize()
|
||||
protected override Task<IBNItem<Studio>> 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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -46,7 +46,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
// Get the original entity so that we can also supply the PrimaryImagePath
|
||||
return new IBNItem<Studio>()
|
||||
{
|
||||
Item = await Kernel.Instance.ItemController.GetStudio(name),
|
||||
Item = await Kernel.Instance.ItemController.GetStudio(name).ConfigureAwait(false),
|
||||
BaseItemCount = count
|
||||
};
|
||||
}
|
||||
|
||||
@@ -11,13 +11,13 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
{
|
||||
public class StudiosHandler : BaseJsonHandler<IEnumerable<IBNItem<Studio>>>
|
||||
{
|
||||
protected override async Task<IEnumerable<IBNItem<Studio>>> GetObjectToSerialize()
|
||||
protected override Task<IEnumerable<IBNItem<Studio>>> 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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -53,7 +53,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerable<Studio> entities = await Task.WhenAll<Studio>(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetStudio(key); }));
|
||||
IEnumerable<Studio> entities = await Task.WhenAll<Studio>(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetStudio(key); })).ConfigureAwait(false);
|
||||
|
||||
return entities.Select(e => new IBNItem<Studio>() { Item = e, BaseItemCount = data[e.Name] });
|
||||
}
|
||||
|
||||
@@ -10,10 +10,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
{
|
||||
protected override Task<IEnumerable<User>> GetObjectToSerialize()
|
||||
{
|
||||
return Task.Run(() =>
|
||||
{
|
||||
return Kernel.Instance.Users;
|
||||
});
|
||||
return Task.FromResult<IEnumerable<User>>(Kernel.Instance.Users);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
/// </summary>
|
||||
public class YearHandler : BaseJsonHandler<IBNItem<Year>>
|
||||
{
|
||||
protected override async Task<IBNItem<Year>> GetObjectToSerialize()
|
||||
protected override Task<IBNItem<Year>> 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));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -46,7 +46,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
// Get the original entity so that we can also supply the PrimaryImagePath
|
||||
return new IBNItem<Year>()
|
||||
{
|
||||
Item = await Kernel.Instance.ItemController.GetYear(year),
|
||||
Item = await Kernel.Instance.ItemController.GetYear(year).ConfigureAwait(false),
|
||||
BaseItemCount = count
|
||||
};
|
||||
}
|
||||
|
||||
@@ -11,13 +11,13 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
{
|
||||
public class YearsHandler : BaseJsonHandler<IEnumerable<IBNItem<Year>>>
|
||||
{
|
||||
protected override async Task<IEnumerable<IBNItem<Year>>> GetObjectToSerialize()
|
||||
protected override Task<IEnumerable<IBNItem<Year>>> 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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -50,7 +50,7 @@ namespace MediaBrowser.Api.HttpHandlers
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerable<Year> entities = await Task.WhenAll<Year>(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetYear(key); }));
|
||||
IEnumerable<Year> entities = await Task.WhenAll<Year>(data.Keys.Select(key => { return Kernel.Instance.ItemController.GetYear(key); })).ConfigureAwait(false);
|
||||
|
||||
return entities.Select(e => new IBNItem<Year>() { Item = e, BaseItemCount = data[int.Parse(e.Name)] });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user