From d521a51549e42a465de4cc812ab9cd6294774e46 Mon Sep 17 00:00:00 2001 From: ThatBen Date: Mon, 5 May 2025 08:29:03 +0200 Subject: [PATCH] attempt to fix saving of the folder file --- .../Modes/FolderStore/FolderSaver.cs | 58 ++++++++++++++----- Tools/AutoClient/Modes/FolderStoreMode.cs | 1 + 2 files changed, 44 insertions(+), 15 deletions(-) diff --git a/Tools/AutoClient/Modes/FolderStore/FolderSaver.cs b/Tools/AutoClient/Modes/FolderStore/FolderSaver.cs index 7a02191a..bf513dd2 100644 --- a/Tools/AutoClient/Modes/FolderStore/FolderSaver.cs +++ b/Tools/AutoClient/Modes/FolderStore/FolderSaver.cs @@ -5,7 +5,7 @@ namespace AutoClient.Modes.FolderStore { public class FolderSaver : IFileSaverEventHandler { - private const string FolderSaverFilename = "foldersaver.json"; + public const string FolderSaverFilename = "foldersaver.json"; private readonly App app; private readonly LoadBalancer loadBalancer; private readonly JsonFile statusFile; @@ -52,6 +52,8 @@ namespace AutoClient.Modes.FolderStore SaveChanges(); Thread.Sleep(100); } + + app.Log.Log("All files processed."); } private void CheckAndSaveChanges() @@ -105,20 +107,9 @@ namespace AutoClient.Modes.FolderStore Filename = FolderSaverFilename }; var folderFile = Path.Combine(app.Config.FolderToStore, FolderSaverFilename); - var cidsFile = Path.Combine(app.Config.DataPath, "cids.log"); ApplyPadding(folderFile); - var fileSaver = CreateFileSaver(folderFile, entry); + var fileSaver = CreateFileSaver(folderFile, entry, new FolderSaveResultHandler(app, entry)); fileSaver.Process(); - - if (!string.IsNullOrEmpty(entry.EncodedCid)) - { - app.Log.Log($"!!! {FolderSaverFilename} saved to CID '{entry.EncodedCid}' !!!"); - File.AppendAllLines(cidsFile, [entry.EncodedCid]); - } - else - { - app.Log.Error($"Failed to store {FolderSaverFilename} :|"); - } } private const int MinCodexStorageFilesize = 262144; @@ -136,16 +127,21 @@ namespace AutoClient.Modes.FolderStore lock (statusLock) { status.Padding = paddingMessage + RandomUtils.GenerateRandomString(required); + statusFile.Save(status); } - SaveChanges(); } } private FileSaver CreateFileSaver(string folderFile, FileStatus entry) + { + return CreateFileSaver(folderFile, entry, slowModeHandler); + } + + private FileSaver CreateFileSaver(string folderFile, FileStatus entry, IFileSaverResultHandler resultHandler) { var fixedLength = entry.Filename.PadRight(35); var prefix = $"[{fixedLength}] "; - return new FileSaver(new LogPrefixer(app.Log, prefix), loadBalancer, status.Stats, folderFile, entry, this, slowModeHandler); + return new FileSaver(new LogPrefixer(app.Log, prefix), loadBalancer, status.Stats, folderFile, entry, this, resultHandler); } public void SaveChanges() @@ -157,4 +153,36 @@ namespace AutoClient.Modes.FolderStore changeCounter++; } } + + public class FolderSaveResultHandler : IFileSaverResultHandler + { + private readonly App app; + private readonly FileStatus entry; + + public FolderSaveResultHandler(App app, FileStatus entry) + { + this.app = app; + this.entry = entry; + } + + public void OnFailure() + { + app.Log.Error($"Failed to store {FolderSaver.FolderSaverFilename} :|"); + } + + public void OnSuccess() + { + if (!string.IsNullOrEmpty(entry.EncodedCid)) + { + var cidsFile = Path.Combine(app.Config.DataPath, "cids.log"); + File.AppendAllLines(cidsFile, [entry.EncodedCid]); + app.Log.Log($"!!! {FolderSaver.FolderSaverFilename} saved to CID '{entry.EncodedCid}' !!!"); + } + else + { + + app.Log.Error($"Foldersaver entry didn't have encoded CID somehow :|"); + } + } + } } diff --git a/Tools/AutoClient/Modes/FolderStoreMode.cs b/Tools/AutoClient/Modes/FolderStoreMode.cs index 1d368706..f6e986b1 100644 --- a/Tools/AutoClient/Modes/FolderStoreMode.cs +++ b/Tools/AutoClient/Modes/FolderStoreMode.cs @@ -24,6 +24,7 @@ namespace AutoClient.Modes while (!app.Cts.IsCancellationRequested) { saver.Run(); + Thread.Sleep(TimeSpan.FromHours(1.0)); } } catch (Exception ex)