reduce task allocations by making IBN api synchronous

This commit is contained in:
Luke Pulverenti
2013-09-16 22:08:18 -04:00
parent aaecc99d63
commit 1007f24200
27 changed files with 199 additions and 376 deletions

View File

@@ -14,7 +14,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// <summary>
/// The _library manager
/// </summary>
private readonly LibraryManager _libraryManager;
private readonly ILibraryManager _libraryManager;
/// <summary>
/// The _user manager
@@ -26,7 +26,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// </summary>
private readonly ILogger _logger;
public GameGenresValidator(LibraryManager libraryManager, IUserManager userManager, ILogger logger)
public GameGenresValidator(ILibraryManager libraryManager, IUserManager userManager, ILogger logger)
{
_libraryManager = libraryManager;
_userManager = userManager;
@@ -47,8 +47,6 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
.Select(i => new Tuple<Guid, List<Game>>(i.Id, i.RootFolder.GetRecursiveChildren(i).OfType<Game>().ToList()))
.ToList();
var allLibraryItems = allItems;
var masterDictionary = new Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>>(StringComparer.OrdinalIgnoreCase);
// Populate counts of items
@@ -99,7 +97,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
private async Task UpdateItemByNameCounts(string name, CancellationToken cancellationToken, Dictionary<Guid, Dictionary<CountType, int>> counts)
{
var itemByName = await _libraryManager.GetGameGenre(name, cancellationToken, true, true).ConfigureAwait(false);
var itemByName = _libraryManager.GetGameGenre(name);
foreach (var libraryId in counts.Keys)
{
@@ -107,6 +105,8 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
itemByName.UserItemCounts[libraryId] = itemCounts;
}
await itemByName.RefreshMetadata(cancellationToken).ConfigureAwait(false);
}
private void SetItemCounts(Guid userId, IEnumerable<BaseItem> allItems, Dictionary<string, Dictionary<Guid, Dictionary<CountType, int>>> masterDictionary)