From 5b8e6a3d9fec34538e21e197b1384277b94eec8d Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Tue, 13 Dec 2022 12:39:54 +0100 Subject: [PATCH] add some logging, fix cache handling on load --- MareSynchronos/FileCache/FileCacheManager.cs | 6 +++--- .../Managers/TransientResourceManager.cs | 5 +++++ MareSynchronos/Models/FileReplacement.cs | 19 ++++++++++++++----- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/MareSynchronos/FileCache/FileCacheManager.cs b/MareSynchronos/FileCache/FileCacheManager.cs index 34550f3..5f49e4a 100644 --- a/MareSynchronos/FileCache/FileCacheManager.cs +++ b/MareSynchronos/FileCache/FileCacheManager.cs @@ -47,7 +47,7 @@ public class FileCacheManager : IDisposable var hash = splittedEntry[0]; var path = splittedEntry[1]; var time = splittedEntry[2]; - FileCaches[path] = new FileCacheEntity(hash, path, time); + FileCaches[path] = ReplacePathPrefixes(new FileCacheEntity(hash, path, time)); } catch (Exception) { @@ -112,8 +112,8 @@ public class FileCacheManager : IDisposable public FileCacheEntity? GetFileCacheByPath(string path) { - var cleanedPath = path.Replace("/", "\\", StringComparison.Ordinal).ToLowerInvariant().Replace(_ipcManager.PenumbraModDirectory()!.ToLowerInvariant(), "", StringComparison.Ordinal); - var entry = FileCaches.FirstOrDefault(f => f.Value.ResolvedFilepath.EndsWith(cleanedPath, StringComparison.Ordinal)).Value; + var cleanedPath = path.Replace("/", "\\", StringComparison.OrdinalIgnoreCase).ToLowerInvariant().Replace(_ipcManager.PenumbraModDirectory()!.ToLowerInvariant(), "", StringComparison.OrdinalIgnoreCase); + var entry = FileCaches.FirstOrDefault(f => f.Value.ResolvedFilepath.EndsWith(cleanedPath, StringComparison.OrdinalIgnoreCase)).Value; if (entry == null) { diff --git a/MareSynchronos/Managers/TransientResourceManager.cs b/MareSynchronos/Managers/TransientResourceManager.cs index e143dbd..b353c9d 100644 --- a/MareSynchronos/Managers/TransientResourceManager.cs +++ b/MareSynchronos/Managers/TransientResourceManager.cs @@ -39,15 +39,20 @@ public class TransientResourceManager : IDisposable { var persistentEntities = File.ReadAllLines(PersistentDataCache); SemiTransientResources.TryAdd(ObjectKind.Player, new HashSet()); + int restored = 0; foreach (var line in persistentEntities) { var fileReplacement = fileReplacementFactory.Create(); fileReplacement.ResolvePath(line); if (fileReplacement.HasFileReplacement) { + Logger.Debug("Loaded persistent transient resource " + line); SemiTransientResources[ObjectKind.Player].Add(fileReplacement); + restored++; } } + + Logger.Debug($"Restored {restored}/{persistentEntities.Count()} semi persistent resources"); } } diff --git a/MareSynchronos/Models/FileReplacement.cs b/MareSynchronos/Models/FileReplacement.cs index f4aa19a..bcfd216 100644 --- a/MareSynchronos/Models/FileReplacement.cs +++ b/MareSynchronos/Models/FileReplacement.cs @@ -6,7 +6,7 @@ using MareSynchronos.API; using System.Text.RegularExpressions; using MareSynchronos.FileCache; using MareSynchronos.Managers; -using System; +using MareSynchronos.Utils; namespace MareSynchronos.Models; @@ -50,15 +50,24 @@ public class FileReplacement if (!IsFileSwap) { var cache = fileDbManager.GetFileCacheByPath(ResolvedPath); - if (cache == null) return false; + if (cache == null) + { + Logger.Warn("Replacement Failed verification: " + GamePaths.First()); + return false; + } Hash = cache.Hash; return true; } - var resolvedPath = fileDbManager.ResolveFileReplacement(GamePaths.First()); - ResolvedPath = resolvedPath.ToLowerInvariant(); + ResolvePath(GamePaths.First()); - return IsFileSwap; + var success = IsFileSwap; + if (!success) + { + Logger.Warn("FileSwap Failed verification: " + GamePaths.First()); + } + + return success; } public FileReplacementDto ToFileReplacementDto()