From 246579f9d2dac1b96cd25010f178893fb6d305d1 Mon Sep 17 00:00:00 2001 From: Zontreck Date: Sun, 1 Jan 2023 12:46:17 -0700 Subject: [PATCH] Updates --- Serialization/ZNIFile/UUIDTag.cs | 12 +++++++++++ Tools.cs | 30 ++++++++++++++++++++++++++ VolatileMemoryWorker.cs | 36 ++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 VolatileMemoryWorker.cs diff --git a/Serialization/ZNIFile/UUIDTag.cs b/Serialization/ZNIFile/UUIDTag.cs index 48803e1..3b54066 100644 --- a/Serialization/ZNIFile/UUIDTag.cs +++ b/Serialization/ZNIFile/UUIDTag.cs @@ -17,6 +17,18 @@ namespace LibZNI.Serialization.ZNIFile return LongVal; } } + public static UUIDTag Random(string sName) + { + UUIDTag rnd = new UUIDTag(sName, Guid.Random()); + + return rnd; + } + + public static UUIDTag Empty(string sName) + { + UUIDTag z = new UUIDTag(sName, Guid.Empty()); + return rnd; + } public UUIDTag(string _Name, Guid val) { diff --git a/Tools.cs b/Tools.cs index c25cde9..b2af708 100644 --- a/Tools.cs +++ b/Tools.cs @@ -10,6 +10,36 @@ using Newtonsoft.Json; namespace LibZNI { + + public static class ConfigLocation + { + private static string LINUX_CONFIG_PATH = Tools.userProfileFolder; + private static string MAC_CONFIG_PATH = LINUX_CONFIG_PATH; + private static string WINDOWS_CONFIG_PATH = Tools.userProfileFolder; + + public static string GetPath() + { + switch(Tools.GetOSShortID()) + { + case "windows": + { + return Path.GetFullPath( WINDOWS_CONFIG_PATH ); + } + case "linux": + { + return Path.GetFullPath(LINUX_CONFIG_PATH); + } + case "osx": + { + return Path.GetFullPath(MAC_CONFIG_PATH); + } + default: + { + return Path.GetFullPath(LINUX_CONFIG_PATH); + } + } + } + } public class Tools { /// diff --git a/VolatileMemoryWorker.cs b/VolatileMemoryWorker.cs new file mode 100644 index 0000000..a481145 --- /dev/null +++ b/VolatileMemoryWorker.cs @@ -0,0 +1,36 @@ +using LibZNI.Serialization; +using LibZNI.Serialization.ZNIFile; +using System.IO; + +/// +/// RAM-like memory +/// Memory is regularly saved to a temporary file called VM.RAM +/// The memory in this class should only be used for temporary persistance between tasks. It should be assumed that this data will purge every restart. +/// +namespace LibZNI +{ + + public class VolatileMemory : Serializable + { + public static Folder Memory = new Folder("MEM"); + + public override void save(Folder f) + { + f.Add(VolatileMemory.Memory); + } + public override void load(Folder f) + { + VolatileMemory.Memory = f["MEM"] as Folder; + } + + + public void FullSave() + { + + Folder f = new Folder("root"); + save(f); + + TagIO.SaveToFile(ConfigLocation.GetPath()+".volatile", f); + } + } +} \ No newline at end of file