ソースを参照

Use sync string instead of file

David 4 年 前
コミット
e835dfb27d

+ 3 - 3
Emby.Server.Implementations/ApplicationHost.cs

@@ -10,6 +10,7 @@ using System.Net;
 using System.Reflection;
 using System.Runtime.InteropServices;
 using System.Security.Cryptography.X509Certificates;
+using System.Text.Json;
 using System.Threading;
 using System.Threading.Tasks;
 using Emby.Dlna;
@@ -100,7 +101,6 @@ using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Logging;
 using Prometheus.DotNetRuntime;
-using JsonSerializer = System.Text.Json.JsonSerializer;
 using OperatingSystem = MediaBrowser.Common.System.OperatingSystem;
 using WebSocketManager = Emby.Server.Implementations.HttpServer.WebSocketManager;
 
@@ -1047,8 +1047,8 @@ namespace Emby.Server.Implementations
                     var metafile = Path.Combine(dir, "meta.json");
                     if (File.Exists(metafile))
                     {
-                        using FileStream jsonStream = File.OpenRead(metafile);
-                        var manifest = JsonSerializer.DeserializeAsync<PluginManifest>(jsonStream, jsonOptions).GetAwaiter().GetResult();
+                        var jsonString = File.ReadAllText(metafile);
+                        var manifest = JsonSerializer.Deserialize<PluginManifest>(jsonString, jsonOptions);
 
                         if (!Version.TryParse(manifest.TargetAbi, out var targetAbi))
                         {

+ 3 - 2
Emby.Server.Implementations/Channels/ChannelManager.cs

@@ -340,8 +340,8 @@ namespace Emby.Server.Implementations.Channels
 
             try
             {
-                using FileStream jsonStream = File.OpenRead(path);
-                return JsonSerializer.DeserializeAsync<List<MediaSourceInfo>>(jsonStream, JsonDefaults.GetOptions()).GetAwaiter().GetResult()
+                var jsonString = File.ReadAllText(path);
+                return JsonSerializer.Deserialize<List<MediaSourceInfo>>(jsonString, JsonDefaults.GetOptions())
                     ?? new List<MediaSourceInfo>();
             }
             catch
@@ -368,6 +368,7 @@ namespace Emby.Server.Implementations.Channels
             }
 
             Directory.CreateDirectory(Path.GetDirectoryName(path));
+
             await using FileStream createStream = File.Create(path);
             await JsonSerializer.SerializeAsync(createStream, mediaSources, JsonDefaults.GetOptions()).ConfigureAwait(false);
         }

+ 2 - 2
Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs

@@ -44,8 +44,8 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
 
                 try
                 {
-                    using FileStream jsonStream = File.OpenRead(_dataPath);
-                    _items = JsonSerializer.DeserializeAsync<T[]>(jsonStream, JsonDefaults.GetOptions()).GetAwaiter().GetResult();
+                    var jsonString = File.ReadAllText(_dataPath);
+                    _items = JsonSerializer.Deserialize<T[]>(jsonString, JsonDefaults.GetOptions());
                     return;
                 }
                 catch (Exception ex)

+ 9 - 2
Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs

@@ -139,8 +139,15 @@ namespace Emby.Server.Implementations.ScheduledTasks
                         {
                             try
                             {
-                                using FileStream jsonStream = File.OpenRead(path);
-                                _lastExecutionResult = JsonSerializer.DeserializeAsync<TaskResult>(jsonStream, JsonDefaults.GetOptions()).GetAwaiter().GetResult();
+                                var jsonString = File.ReadAllText(path);
+                                if (!string.IsNullOrWhiteSpace(jsonString))
+                                {
+                                    _lastExecutionResult = JsonSerializer.Deserialize<TaskResult>(jsonString, JsonDefaults.GetOptions());
+                                }
+                                else
+                                {
+                                    _logger.LogDebug("Scheduled Task history file {path} is empty. Skipping deserialization.", path);
+                                }
                             }
                             catch (Exception ex)
                             {