dragonfly/addons/db/functions/fnc_handler.sqf
Jacob Schmidt ce904a7978
All checks were successful
Build / Build (push) Successful in 30s
feat(db): Add debug logging to all DragonflyDB functions
Enhanced debugging capabilities by adding conditional logging statements to all DragonflyDB functions. These logs include input parameters and return values, providing detailed insights into function execution. The logging is enabled only when the `__A3__DEBUG__` preprocessor directive is defined, ensuring minimal performance impact in production environments. This change improves the ability to diagnose issues and understand the flow of data within the DragonflyDB system.
2025-03-23 23:20:03 -05:00

53 lines
2.1 KiB
Plaintext

#include "..\script_component.hpp"
/*
* Function: dragonfly_db_fnc_handler
* Author: Creedcoder, J.Schmidt
* Edit: 07.15.2024
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
*
* Do not edit without permission!
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
* PO Box 1866, Mountain View, CA 94042
*
* [Description]
* Handle data from DB.
*
* Arguments:
* 0: UniqueID for data chunk <STRING> (default: "")
* 1: Name of function to return data <STRING> (default: "")
* 2: Unscheduled environment <BOOL> (default: false)
* 3: Data from key [<ARRAY|STRING|NUMBER|BOOL>] (default: [])
* 4: NetID of target to return data to from function <STRING> (default: nil)
*
* Return Value:
* [uniqueID, function, call, data, object] <ARRAY>
*
* Examples:
* ["0123456789", "dragonfly_db_fnc_test", false, ["Hello World!"]] call dragonfly_db_fnc_handler (Server or Singleplayer Only)
* ["0123456789", "dragonfly_db_fnc_test", false, ["Hello World!"], netId player] remoteExecCall ["dragonfly_db_fnc_handler", 2, false] (Multiplayer Only)
*
* Public: Yes
*/
params [["_uniqueID", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_data", [], [[]]], ["_netId", nil, [""]]];
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_handler' UniqueID: '%1', Function: '%2', Call: '%3', Data: '%4', NetId: '%5'", _uniqueID, _function, _call, _data, _netId];
#endif
if (_function == "" || count _data == 0) exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_handler' Invalid Input for Function '%1' or Data '%2'", _function, _data];
};
private _func = call compile format ["%1", _function];
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
private _target = objectFromNetId _netId;
if (_call) then { _data remoteExecCall [_function, _target, false]; } else { _data remoteExec [_function, _target, false]; };
} else {
if (_call) then { _data call _func; } else { _data spawn _func; };
};