initial commit
This commit is contained in:
54
life_server/Functions/MySQL/fn_asyncCall.sqf
Normal file
54
life_server/Functions/MySQL/fn_asyncCall.sqf
Normal file
@@ -0,0 +1,54 @@
|
||||
#include "\life_server\script_macros.hpp"
|
||||
/*
|
||||
File: fn_asyncCall.sqf
|
||||
Author: Bryan "Tonic" Boardwine
|
||||
|
||||
Description:
|
||||
Commits an asynchronous call to ExtDB
|
||||
|
||||
Parameters:
|
||||
0: STRING (Query to be ran).
|
||||
1: INTEGER (1 = ASYNC + not return for update/insert, 2 = ASYNC + return for query's).
|
||||
3: BOOL (True to return a single array, false to return multiple entries mainly for garage).
|
||||
*/
|
||||
private ["_queryStmt","_mode","_multiarr","_queryResult","_key","_return","_loop"];
|
||||
_queryStmt = [_this,0,"",[""]] call BIS_fnc_param;
|
||||
_mode = [_this,1,1,[0]] call BIS_fnc_param;
|
||||
_multiarr = [_this,2,false,[false]] call BIS_fnc_param;
|
||||
|
||||
_key = EXTDB format ["%1:%2:%3",_mode,FETCH_CONST(life_sql_id),_queryStmt];
|
||||
|
||||
if (_mode isEqualTo 1) exitWith {true};
|
||||
|
||||
_key = call compile format ["%1",_key];
|
||||
_key = (_key select 1);
|
||||
_queryResult = EXTDB format ["4:%1", _key];
|
||||
|
||||
//Make sure the data is received
|
||||
if (_queryResult isEqualTo "[3]") then {
|
||||
for "_i" from 0 to 1 step 0 do {
|
||||
if (!(_queryResult isEqualTo "[3]")) exitWith {};
|
||||
_queryResult = EXTDB format ["4:%1", _key];
|
||||
};
|
||||
};
|
||||
|
||||
if (_queryResult isEqualTo "[5]") then {
|
||||
_loop = true;
|
||||
for "_i" from 0 to 1 step 0 do { // extDB3 returned that result is Multi-Part Message
|
||||
_queryResult = "";
|
||||
for "_i" from 0 to 1 step 0 do {
|
||||
_pipe = EXTDB format ["5:%1", _key];
|
||||
if (_pipe isEqualTo "") exitWith {_loop = false};
|
||||
_queryResult = _queryResult + _pipe;
|
||||
};
|
||||
if (!_loop) exitWith {};
|
||||
};
|
||||
};
|
||||
_queryResult = call compile _queryResult;
|
||||
if ((_queryResult select 0) isEqualTo 0) exitWith {diag_log format ["extDB3: Protocol Error: %1", _queryResult]; []};
|
||||
_return = (_queryResult select 1);
|
||||
if (!_multiarr && count _return > 0) then {
|
||||
_return = (_return select 0);
|
||||
};
|
||||
|
||||
_return;
|
||||
Reference in New Issue
Block a user