Compare commits

..

No commits in common. "033630977af5e198192ee197583c6ef1db0abfa1" and "b83c22601fb82359c021b3e6cf529a2b32c4693d" have entirely different histories.

6 changed files with 74 additions and 196 deletions

View File

@ -20,10 +20,8 @@ PREP(listSet);
PREP(pubSubFetch); PREP(pubSubFetch);
PREP(pubSubHandler); PREP(pubSubHandler);
PREP(processQueue); PREP(processQueue);
PREP(publish);
PREP(saveDB); PREP(saveDB);
PREP(scheduler); PREP(scheduler);
PREP(set); PREP(set);
PREP(setup); PREP(setup);
PREP(subscribe);
PREP(test); PREP(test);

View File

@ -1,49 +0,0 @@
#include "script_component.hpp"
/*
* Function: dragonfly_db_fnc_publish
* 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]
* Publish a message to a DragonflyDB channel.
* The message will be routed through the CBA event system based on the subscription event type.
*
* Arguments:
* 0: STRING - Channel name to publish to (default: "")
* 1: ARRAY|STRING|NUMBER|BOOL - Data to publish (default: [])
*
* Return Value:
* BOOLEAN - True if successful, false otherwise
*
* Examples:
* ["global_chat", "Hello world!"] call dragonfly_db_fnc_publish
* ["mission_updates", ["task_01", "SUCCEEDED", [2, 3, 4]]] call dragonfly_db_fnc_publish
*
* Public: Yes
*/
params [
["_channel", "", [""]],
["_message", [], [[], "", 0, true]]
];
if (_channel isEqualTo "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_publish' Invalid Input for Channel '%1'", _channel];
false
};
private _args = [_channel, _message];
private _formattedArgs = _args apply { if (_x isEqualType "") then { str _x } else { _x } };
private _extensionArgs = _formattedArgs joinString ",";
private _result = "ArmaDragonflyClient" callExtension ["publish", [_extensionArgs]];
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_publish' Published message to channel '%1': '%2'", _channel, _message];
true

View File

@ -1,71 +0,0 @@
#include "script_component.hpp"
/*
* Function: dragonfly_db_fnc_subscribe
* Author: J. Schmidt
* Edit: 07.15.2024
* Copyright © 2024 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]
* Subscribe to a DragonflyDB channel for real-time updates.
* Uses CBA event system for message handling.
*
* Arguments:
* 0: STRING - Channel name to subscribe to (default: "")
* 1: STRING - Event type: "global", "local", "server", or "remote" (default: "global")
* 2: STRING - CBA event name to trigger when messages are received (default: "")
* 3: STRING - NetID of target to receive messages (only needed for "remote" event type) (default: nil)
*
* Return Value:
* BOOLEAN - True if successful, false otherwise
*
* Examples:
* ["global_chat", "global", "myChatEvent"] call dragonfly_db_fnc_subscribe
* ["player_notifications", "remote", "playerNotificationEvent", netId player] call dragonfly_db_fnc_subscribe
*
* Public: Yes
*/
params [
["_channel", "", [""]],
["_eventType", "global", [""]],
["_eventName", "", [""]],
["_target", nil, [""]]
];
if (_channel isEqualTo "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_subscribe' Invalid Input for Channel '%1'", _channel];
false
};
if (!(_eventType in ["global", "local", "server", "remote"])) exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_subscribe' Invalid Input for Event Type '%1'", _eventType];
false
};
if (_eventType isEqualTo "remote" && (isNil "_target" || _target isEqualTo "")) exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_subscribe' Invalid Input for Target NetID '%1'", _target];
false
};
if (_eventName isEqualTo "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_subscribe' Invalid Input for Event Name '%1'", _eventName];
false
};
private _args = [_channel, _eventType, _eventName];
if (!isNil "_target") then { _args pushBack _target; };
private _formattedArgs = _args apply { if (_x isEqualType "") then { str _x } else { _x } };
private _extensionArgs = _formattedArgs joinString ",";
private _result = "ArmaDragonflyClient" callExtension ["subscribe", [_extensionArgs]];
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_subscribe' Subscribed to channel '%1' with event type '%2' and event name '%3'", _channel, _eventType, _eventName];
true

View File

@ -208,74 +208,74 @@ namespace ArmaDragonflyClient
switch (func.ToLower()) switch (func.ToLower())
{ {
case "get": case "get":
HandleGetOperation(_id, argsArr, argc); HandleGetOperation(_id, argsArr, argc);
WriteOutput(output, $"[\"{_id}_get\",{argsArr[1]}]"); WriteOutput(output, $"[\"{_id}_get\",{argsArr[1]}]");
return 100; return 100;
case "set": case "set":
HandleSetOperation(argsArr); HandleSetOperation(argsArr);
WriteOutput(output, "Async"); WriteOutput(output, "Async");
return 200; return 200;
case "del": case "del":
HandleDelOperation(argsArr); HandleDelOperation(argsArr);
WriteOutput(output, "Async"); WriteOutput(output, "Async");
return 200; return 200;
case "listadd": case "listadd":
HandleListAddOperation(argsArr, argc); HandleListAddOperation(argsArr, argc);
WriteOutput(output, "Async"); WriteOutput(output, "Async");
return 200; return 200;
case "listidx": case "listidx":
HandleListIdxOperation(_id, argsArr, argc); HandleListIdxOperation(_id, argsArr, argc);
WriteOutput(output, $"[\"{_id}_listidx\",{argsArr[2]}]"); WriteOutput(output, $"[\"{_id}_listidx\",{argsArr[2]}]");
return 100; return 100;
case "listlen": case "listlen":
HandleListLenOperation(_id, argsArr); HandleListLenOperation(_id, argsArr);
WriteOutput(output, $"[\"{_id}_listlen\"]"); WriteOutput(output, $"[\"{_id}_listlen\"]");
return 100; return 100;
case "listrem": case "listrem":
HandleListRemOperation(argsArr); HandleListRemOperation(argsArr);
WriteOutput(output, "Async"); WriteOutput(output, "Async");
return 200; return 200;
case "listrng": case "listrng":
HandleListRngOperation(_id, argsArr, argc); HandleListRngOperation(_id, argsArr, argc);
WriteOutput(output, $"[\"{_id}_listrng\",{argsArr[3]}]"); WriteOutput(output, $"[\"{_id}_listrng\",{argsArr[3]}]");
return 100; return 100;
case "listset": case "listset":
HandleListSetOperation(argsArr); HandleListSetOperation(argsArr);
WriteOutput(output, "Async"); WriteOutput(output, "Async");
return 200; return 200;
case "hset": case "hset":
HandleHSetOperation(argsArr, argc); HandleHSetOperation(argsArr, argc);
WriteOutput(output, "Async"); WriteOutput(output, "Async");
return 200; return 200;
case "hsetid": case "hsetid":
HandleHSetIdOperation(argsArr, argc); HandleHSetIdOperation(argsArr, argc);
WriteOutput(output, "Async"); WriteOutput(output, "Async");
return 200; return 200;
case "hget": case "hget":
HandleHGetOperation(_id, argsArr, argc); HandleHGetOperation(_id, argsArr, argc);
WriteOutput(output, $"[\"{_id}_hget\",{argsArr[1]}]"); WriteOutput(output, $"[\"{_id}_hget\",{argsArr[1]}]");
return 100; return 100;
case "hgetid": case "hgetid":
HandleHGetIdOperation(_id, argsArr, argc); HandleHGetIdOperation(_id, argsArr, argc);
WriteOutput(output, $"[\"{_id}_hgetid\",{argsArr[2]}]"); WriteOutput(output, $"[\"{_id}_hgetid\",{argsArr[2]}]");
return 100; return 100;
case "hgetall": case "hgetall":
HandleHGetAllOperation(_id, argsArr, argc); HandleHGetAllOperation(_id, argsArr, argc);
WriteOutput(output, $"[\"{_id}_hgetall\",{argsArr[0]}]"); WriteOutput(output, $"[\"{_id}_hgetall\",{argsArr[0]}]");
return 100; return 100;
case "hgetallid": case "hgetallid":
HandleHGetAllIdOperation(_id, argsArr, argc); HandleHGetAllIdOperation(_id, argsArr, argc);
WriteOutput(output, $"[\"{_id}_hgetallid\",{argsArr[1]}]"); WriteOutput(output, $"[\"{_id}_hgetallid\",{argsArr[1]}]");
return 100; return 100;
case "hdel": case "hdel":
HandleHDelOperation(argsArr); HandleHDelOperation(argsArr);
WriteOutput(output, "Async"); WriteOutput(output, "Async");
return 200; return 200;
case "hdelid": case "hdelid":
HandleHDelIdOperation(argsArr); HandleHDelIdOperation(argsArr);
WriteOutput(output, "Async"); WriteOutput(output, "Async");
return 200; return 200;
case "publish": case "publish":
HandlePublishOperation(_id, argsArr); HandlePublishOperation(_id, argsArr);
WriteOutput(output, $"[\"{_id}_publish\"]"); WriteOutput(output, $"[\"{_id}_publish\"]");
@ -292,12 +292,12 @@ namespace ArmaDragonflyClient
HandleSetupOperation(argsArr, argc); HandleSetupOperation(argsArr, argc);
WriteOutput(output, "Connection settings updated"); WriteOutput(output, "Connection settings updated");
return 100; return 100;
case "version": case "version":
WriteOutput(output, ADC_VERSION); WriteOutput(output, ADC_VERSION);
return 100; return 100;
default: default:
WriteOutput(output, "Available Functions: get, set, del, listadd, listidx, listlen, listrem, listrng, listset, hset, hsetid, hget, hgetid, hgetall, hgetallid, hdel, hdelid, publish, subscribe, savedb, setup, version"); WriteOutput(output, "Available Functions: get, set, del, listadd, listidx, listlen, listrem, listrng, listset, hset, hsetid, hget, hgetid, hgetall, hgetallid, hdel, hdelid, savedb, setup, version");
return -1; return -1;
} }
} }