This commit introduces binary serialization for the RAM database to improve performance and adds a mission end event handler to ensure data is saved with a backup when the mission ends.
- Implemented binary serialization and deserialization for key-values, hash tables, and lists in `Utils.cs`. This replaces the previous text-based serialization, resulting in faster save and load times.
- Moved data writing and reading logic from `RAMDb.cs` to `Utils.cs` for better code organization and reusability.
- Modified `RAMDb.cs` to use the new binary serialization methods (`ExportToBinary` and `ImportFromBinary`).
- Added a mission end event handler in `XEH_preInit_server.sqf` to trigger a forced save with backup when the mission ends. This ensures that data is not lost in case of unexpected server shutdowns.
- Updated the extension binaries (`ArmaRAMDb_x64.dll` and `ArmaRAMDb_x64.so`) with the new serialization logic.
- Added a static `db` property to the `Main` class to allow access to the `RAMDb` instance from anywhere in the extension.
- Modified the `Save` and `Load` methods in `Main.cs` to use the new binary serialization methods.
- Updated the `Dispose` method in `RAMDb.cs` to ensure a final save and backup is performed when the object is disposed.
This commit introduces database loading functionality and handles the scenario where the ARDB file is not found.
Key changes:
* In `addons/db/functions/fnc_init.sqf`, the `load` function is called to initialize the database.
* In `extension/src/RAMDb.cs`, a check is added to verify the existence of the ARDB file. If the file is not found, a new database will be created when data is saved, and an info log is generated.
* Updated DLL and SO files.
This commit updates file paths and build artifacts for the ArmaRAMDb extension.
Specifically, the following changes were made:
* **Main.cs:**
* Defined `DEFAULT_ARDB_PATH` to store the default path for the ARDB file.
* Updated `ARDB_LOGFOLDER` to use `Path.DirectorySeparatorChar` for cross-platform compatibility.
* Used `DEFAULT_ARDB_PATH` when checking for the existence of the ARDB file.
* **RAMDb.cs:**
* Removed the `DEFAULT_ARDB_PATH` constant.
* Modified the constructor to accept an optional `ardbPath` parameter and use `Main.DEFAULT_ARDB_PATH` as the default if none is provided.
* **Build Artifacts:**
* Updated the `ArmaRAMDb_x64.dll` and `ArmaRAMDb_x64.so` files in the extension/bin/Release/net8.0/win-x64/publish and extension/bin/Release/net8.0/linux-x64/publish directories, as well as the root directory.