aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaus Vium <cvium@users.noreply.github.com>2022-12-07 18:32:23 +0100
committerGitHub <noreply@github.com>2022-12-07 18:32:23 +0100
commit2c5573b1458af72a56e9af01d2093df4edba8124 (patch)
tree04ece703e49a0f33953efdeff27b968504927525
parent558e3d1333ed0b8999ca4f25cd62688db663d71e (diff)
parent9bb1bc5a3e744f8f7a4d4b63067c5db4e36d68c4 (diff)
Merge pull request #8868 from Bond-009/priorityqueue
Remove dependency on OptimizedPriorityQueue
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs18
-rw-r--r--MediaBrowser.Controller/Providers/IProviderManager.cs2
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs24
-rw-r--r--MediaBrowser.Providers/MediaBrowser.Providers.csproj1
4 files changed, 18 insertions, 27 deletions
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index 70439d258..4bbb391cc 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -1154,7 +1154,7 @@ namespace Emby.Server.Implementations.Library
.ToList();
}
- private VirtualFolderInfo GetVirtualFolderInfo(string dir, List<BaseItem> allCollectionFolders, Dictionary<Guid, Guid> refreshQueue)
+ private VirtualFolderInfo GetVirtualFolderInfo(string dir, List<BaseItem> allCollectionFolders, HashSet<Guid> refreshQueue)
{
var info = new VirtualFolderInfo
{
@@ -1182,22 +1182,22 @@ namespace Emby.Server.Implementations.Library
};
var libraryFolder = allCollectionFolders.FirstOrDefault(i => string.Equals(i.Path, dir, StringComparison.OrdinalIgnoreCase));
-
- if (libraryFolder is not null && libraryFolder.HasImage(ImageType.Primary))
- {
- info.PrimaryImageItemId = libraryFolder.Id.ToString("N", CultureInfo.InvariantCulture);
- }
-
if (libraryFolder is not null)
{
- info.ItemId = libraryFolder.Id.ToString("N", CultureInfo.InvariantCulture);
+ var libraryFolderId = libraryFolder.Id.ToString("N", CultureInfo.InvariantCulture);
+ info.ItemId = libraryFolderId;
+ if (libraryFolder.HasImage(ImageType.Primary))
+ {
+ info.PrimaryImageItemId = libraryFolderId;
+ }
+
info.LibraryOptions = GetLibraryOptions(libraryFolder);
if (refreshQueue is not null)
{
info.RefreshProgress = libraryFolder.GetRefreshProgress();
- info.RefreshStatus = info.RefreshProgress.HasValue ? "Active" : refreshQueue.ContainsKey(libraryFolder.Id) ? "Queued" : "Idle";
+ info.RefreshStatus = info.RefreshProgress.HasValue ? "Active" : refreshQueue.Contains(libraryFolder.Id) ? "Queued" : "Idle";
}
}
diff --git a/MediaBrowser.Controller/Providers/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs
index 32a7951f6..7e0a69586 100644
--- a/MediaBrowser.Controller/Providers/IProviderManager.cs
+++ b/MediaBrowser.Controller/Providers/IProviderManager.cs
@@ -216,7 +216,7 @@ namespace MediaBrowser.Controller.Providers
/// <returns>Task{HttpResponseInfo}.</returns>
Task<HttpResponseMessage> GetSearchImage(string providerName, string url, CancellationToken cancellationToken);
- Dictionary<Guid, Guid> GetRefreshQueue();
+ HashSet<Guid> GetRefreshQueue();
void OnRefreshStart(BaseItem item);
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index d3ac2f6cd..914da33a9 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -31,7 +31,6 @@ using MediaBrowser.Model.IO;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.Providers;
using Microsoft.Extensions.Logging;
-using Priority_Queue;
using Book = MediaBrowser.Controller.Entities.Book;
using Episode = MediaBrowser.Controller.Entities.TV.Episode;
using Movie = MediaBrowser.Controller.Entities.Movies.Movie;
@@ -58,7 +57,7 @@ namespace MediaBrowser.Providers.Manager
private readonly IBaseItemManager _baseItemManager;
private readonly ConcurrentDictionary<Guid, double> _activeRefreshes = new();
private readonly CancellationTokenSource _disposeCancellationTokenSource = new();
- private readonly SimplePriorityQueue<Tuple<Guid, MetadataRefreshOptions>> _refreshQueue = new();
+ private readonly PriorityQueue<(Guid ItemId, MetadataRefreshOptions RefreshOptions), RefreshPriority> _refreshQueue = new();
private IImageProvider[] _imageProviders = Array.Empty<IImageProvider>();
private IMetadataService[] _metadataServices = Array.Empty<IMetadataService>();
@@ -897,18 +896,11 @@ namespace MediaBrowser.Providers.Manager
}
/// <inheritdoc/>
- public Dictionary<Guid, Guid> GetRefreshQueue()
+ public HashSet<Guid> GetRefreshQueue()
{
lock (_refreshQueueLock)
{
- var dict = new Dictionary<Guid, Guid>();
-
- foreach (var item in _refreshQueue)
- {
- dict[item.Item1] = item.Item1;
- }
-
- return dict;
+ return _refreshQueue.UnorderedItems.Select(x => x.Element.ItemId).ToHashSet();
}
}
@@ -969,7 +961,7 @@ namespace MediaBrowser.Providers.Manager
return;
}
- _refreshQueue.Enqueue(new Tuple<Guid, MetadataRefreshOptions>(itemId, options), (int)priority);
+ _refreshQueue.Enqueue((itemId, options), priority);
lock (_refreshQueueLock)
{
@@ -992,7 +984,7 @@ namespace MediaBrowser.Providers.Manager
var cancellationToken = _disposeCancellationTokenSource.Token;
- while (_refreshQueue.TryDequeue(out Tuple<Guid, MetadataRefreshOptions> refreshItem))
+ while (_refreshQueue.TryDequeue(out var refreshItem, out _))
{
if (_disposed)
{
@@ -1001,15 +993,15 @@ namespace MediaBrowser.Providers.Manager
try
{
- var item = libraryManager.GetItemById(refreshItem.Item1);
+ var item = libraryManager.GetItemById(refreshItem.ItemId);
if (item is null)
{
continue;
}
var task = item is MusicArtist artist
- ? RefreshArtist(artist, refreshItem.Item2, cancellationToken)
- : RefreshItem(item, refreshItem.Item2, cancellationToken);
+ ? RefreshArtist(artist, refreshItem.RefreshOptions, cancellationToken)
+ : RefreshItem(item, refreshItem.RefreshOptions, cancellationToken);
await task.ConfigureAwait(false);
}
diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj
index d91402f51..3712b50c6 100644
--- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj
+++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj
@@ -22,7 +22,6 @@
<PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
- <PackageReference Include="OptimizedPriorityQueue" Version="5.1.0" />
<PackageReference Include="PlaylistsNET" Version="1.2.1" />
<PackageReference Include="TagLibSharp" Version="2.3.0" />
<PackageReference Include="TMDbLib" Version="1.9.2" />