浏览代码

Do not use IAsyncEnumerable unnecessarily

Mark Monteiro 5 年之前
父节点
当前提交
8e3b09a996

+ 2 - 3
Emby.Server.Implementations/ScheduledTasks/Tasks/PluginUpdateTask.cs

@@ -55,9 +55,8 @@ namespace Emby.Server.Implementations.ScheduledTasks
         {
         {
             progress.Report(0);
             progress.Report(0);
 
 
-            var packagesToInstall = await _installationManager.GetAvailablePluginUpdates(cancellationToken)
-                .ToListAsync(cancellationToken)
-                .ConfigureAwait(false);
+            var packageFetchTask = _installationManager.GetAvailablePluginUpdates(cancellationToken);
+            var packagesToInstall = (await packageFetchTask.ConfigureAwait(false)).ToList();
 
 
             progress.Report(10);
             progress.Report(10);
 
 

+ 6 - 5
Emby.Server.Implementations/Updates/InstallationManager.cs

@@ -189,16 +189,17 @@ namespace Emby.Server.Implementations.Updates
         }
         }
 
 
         /// <inheritdoc />
         /// <inheritdoc />
-        public async IAsyncEnumerable<PackageVersionInfo> GetAvailablePluginUpdates([EnumeratorCancellation] CancellationToken cancellationToken = default)
+        public async Task<IEnumerable<PackageVersionInfo>> GetAvailablePluginUpdates(CancellationToken cancellationToken = default)
         {
         {
             var catalog = await GetAvailablePackages(cancellationToken).ConfigureAwait(false);
             var catalog = await GetAvailablePackages(cancellationToken).ConfigureAwait(false);
+            return GetAvailablePluginUpdates(catalog);
+        }
 
 
-            var systemUpdateLevel = _applicationHost.SystemUpdateLevel;
-
-            // Figure out what needs to be installed
+        private IEnumerable<PackageVersionInfo> GetAvailablePluginUpdates(IReadOnlyList<PackageInfo> pluginCatalog)
+        {
             foreach (var plugin in _applicationHost.Plugins)
             foreach (var plugin in _applicationHost.Plugins)
             {
             {
-                var compatibleversions = GetCompatibleVersions(catalog, plugin.Name, plugin.Id, plugin.Version, systemUpdateLevel);
+                var compatibleversions = GetCompatibleVersions(pluginCatalog, plugin.Name, plugin.Id, plugin.Version, _applicationHost.SystemUpdateLevel);
                 var version = compatibleversions.FirstOrDefault(y => y.Version > plugin.Version);
                 var version = compatibleversions.FirstOrDefault(y => y.Version > plugin.Version);
                 if (version != null
                 if (version != null
                     && !CompletedInstallations.Any(x => string.Equals(x.AssemblyGuid, version.guid, StringComparison.OrdinalIgnoreCase)))
                     && !CompletedInstallations.Any(x => string.Equals(x.AssemblyGuid, version.guid, StringComparison.OrdinalIgnoreCase)))

+ 1 - 1
MediaBrowser.Common/Updates/IInstallationManager.cs

@@ -92,7 +92,7 @@ namespace MediaBrowser.Common.Updates
         /// </summary>
         /// </summary>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <returns>The available plugin updates.</returns>
         /// <returns>The available plugin updates.</returns>
-        IAsyncEnumerable<PackageVersionInfo> GetAvailablePluginUpdates(CancellationToken cancellationToken = default);
+        Task<IEnumerable<PackageVersionInfo>> GetAvailablePluginUpdates(CancellationToken cancellationToken = default);
 
 
         /// <summary>
         /// <summary>
         /// Installs the package.
         /// Installs the package.