
All checks were successful
Build / Build (push) Successful in 29s
This commit includes several improvements and fixes: * **Improved Chunking Logic:** Refactored the chunking logic in `Utils.cs` to use a more efficient approach, improving performance. The previous implementation was complex and less performant. This change simplifies the logic and improves efficiency. * **Fixed Handler Function:** Modified `fnc_handler.sqf` to correctly handle remote execution with NetIds, ensuring that if the NetId resolves to a null object, the function falls back to local execution. This prevents errors when the target object is no longer valid. * **Added Save Backup Option:** Added the ability to create a backup when saving data in `fnc_save.sqf`. This allows for data recovery in case of corruption. * **Updated DLL/SO:** Updated the ArmaRAMDb_x64.dll and ArmaRAMDb_x64.so files.
58 lines
1.8 KiB
Plaintext
58 lines
1.8 KiB
Plaintext
#include "..\script_component.hpp"
|
|
|
|
/*
|
|
@file Title: ArmaRAMDb Framework by Creedcoder, J.Schmidt
|
|
@file Version: 0.1
|
|
@file Name: fnc_fetch.sqf
|
|
@file Author: Creedcoder, J.Schmidt
|
|
@file edit: 03.25.2024
|
|
Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
|
|
|
|
Do not edit without permission!
|
|
|
|
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlikes 4.0 International License.
|
|
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to Creative Commons,
|
|
444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
|
|
|
|
Fetch from DB:
|
|
ramdb_db_fetch_array
|
|
|
|
["uniqueID", "function", "index", "indextotal", "datachunk", "call", "netId"]
|
|
*/
|
|
|
|
#ifdef __A3__DEBUG__
|
|
diag_log text format ["ArmaRAMDb: 'ramdb_db_fnc_fetch' Input: %1", _this];
|
|
#endif
|
|
|
|
params ["_uniqueID", "_function", "_index", "_total", "_datachunk", "_call", "_netId"];
|
|
|
|
private _dataString = "";
|
|
private _index_array = [];
|
|
private _count_total = -1;
|
|
|
|
ramdb_db_fetch_array pushBackUnique [_uniqueID, _function, _index, _total, _datachunk, _call, _netId];
|
|
|
|
_count_total = {
|
|
if (_uniqueID == _x select 0) then {
|
|
_index_array pushBackUnique [_x select 2, _x select 4];
|
|
true
|
|
} else {
|
|
false
|
|
}
|
|
} count ramdb_db_fetch_array;
|
|
|
|
if (_count_total == _total) then {
|
|
_index_array sort true;
|
|
|
|
{
|
|
_dataString = _dataString + (_x select 1);
|
|
} forEach _index_array;
|
|
|
|
#ifdef __A3__DEBUG__
|
|
diag_log text format ["ArmaRAMDb: 'ramdb_db_fnc_fetch' Data String: %1", _dataString];
|
|
#endif
|
|
|
|
[_uniqueID, _function, _call, (parseSimpleArray _dataString), _netId] call FUNC(handler);
|
|
|
|
ramdb_db_fetch_array = ramdb_db_fetch_array select {!((_x select 0) in [_uniqueID])};
|
|
}; |