Use sync string instead of file

This commit is contained in:
David 2020-12-24 10:31:51 +01:00
parent a714008b59
commit e835dfb27d
4 changed files with 17 additions and 9 deletions

View file

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

View file

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

View file

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

View file

@ -139,8 +139,15 @@ namespace Emby.Server.Implementations.ScheduledTasks
{ {
try try
{ {
using FileStream jsonStream = File.OpenRead(path); var jsonString = File.ReadAllText(path);
_lastExecutionResult = JsonSerializer.DeserializeAsync<TaskResult>(jsonStream, JsonDefaults.GetOptions()).GetAwaiter().GetResult(); 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) catch (Exception ex)
{ {