Compare commits
2 Commits
b83c22601f
...
033630977a
Author | SHA1 | Date | |
---|---|---|---|
![]() |
033630977a | ||
![]() |
38639b50c7 |
@ -20,8 +20,10 @@ PREP(listSet);
|
||||
PREP(pubSubFetch);
|
||||
PREP(pubSubHandler);
|
||||
PREP(processQueue);
|
||||
PREP(publish);
|
||||
PREP(saveDB);
|
||||
PREP(scheduler);
|
||||
PREP(set);
|
||||
PREP(setup);
|
||||
PREP(subscribe);
|
||||
PREP(test);
|
49
addons/db/functions/fnc_publish.sqf
Normal file
49
addons/db/functions/fnc_publish.sqf
Normal file
@ -0,0 +1,49 @@
|
||||
#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
|
71
addons/db/functions/fnc_subscribe.sqf
Normal file
71
addons/db/functions/fnc_subscribe.sqf
Normal file
@ -0,0 +1,71 @@
|
||||
#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
|
Binary file not shown.
Binary file not shown.
@ -208,74 +208,74 @@ namespace ArmaDragonflyClient
|
||||
|
||||
switch (func.ToLower())
|
||||
{
|
||||
case "get":
|
||||
HandleGetOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_get\",{argsArr[1]}]");
|
||||
return 100;
|
||||
case "set":
|
||||
HandleSetOperation(argsArr);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "del":
|
||||
HandleDelOperation(argsArr);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "listadd":
|
||||
HandleListAddOperation(argsArr, argc);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "listidx":
|
||||
HandleListIdxOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_listidx\",{argsArr[2]}]");
|
||||
return 100;
|
||||
case "listlen":
|
||||
HandleListLenOperation(_id, argsArr);
|
||||
WriteOutput(output, $"[\"{_id}_listlen\"]");
|
||||
return 100;
|
||||
case "listrem":
|
||||
HandleListRemOperation(argsArr);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "listrng":
|
||||
HandleListRngOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_listrng\",{argsArr[3]}]");
|
||||
return 100;
|
||||
case "listset":
|
||||
HandleListSetOperation(argsArr);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "hset":
|
||||
HandleHSetOperation(argsArr, argc);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "hsetid":
|
||||
HandleHSetIdOperation(argsArr, argc);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "hget":
|
||||
HandleHGetOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_hget\",{argsArr[1]}]");
|
||||
return 100;
|
||||
case "hgetid":
|
||||
HandleHGetIdOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_hgetid\",{argsArr[2]}]");
|
||||
return 100;
|
||||
case "hgetall":
|
||||
HandleHGetAllOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_hgetall\",{argsArr[0]}]");
|
||||
return 100;
|
||||
case "hgetallid":
|
||||
HandleHGetAllIdOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_hgetallid\",{argsArr[1]}]");
|
||||
return 100;
|
||||
case "hdel":
|
||||
HandleHDelOperation(argsArr);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "hdelid":
|
||||
HandleHDelIdOperation(argsArr);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "get":
|
||||
HandleGetOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_get\",{argsArr[1]}]");
|
||||
return 100;
|
||||
case "set":
|
||||
HandleSetOperation(argsArr);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "del":
|
||||
HandleDelOperation(argsArr);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "listadd":
|
||||
HandleListAddOperation(argsArr, argc);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "listidx":
|
||||
HandleListIdxOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_listidx\",{argsArr[2]}]");
|
||||
return 100;
|
||||
case "listlen":
|
||||
HandleListLenOperation(_id, argsArr);
|
||||
WriteOutput(output, $"[\"{_id}_listlen\"]");
|
||||
return 100;
|
||||
case "listrem":
|
||||
HandleListRemOperation(argsArr);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "listrng":
|
||||
HandleListRngOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_listrng\",{argsArr[3]}]");
|
||||
return 100;
|
||||
case "listset":
|
||||
HandleListSetOperation(argsArr);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "hset":
|
||||
HandleHSetOperation(argsArr, argc);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "hsetid":
|
||||
HandleHSetIdOperation(argsArr, argc);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "hget":
|
||||
HandleHGetOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_hget\",{argsArr[1]}]");
|
||||
return 100;
|
||||
case "hgetid":
|
||||
HandleHGetIdOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_hgetid\",{argsArr[2]}]");
|
||||
return 100;
|
||||
case "hgetall":
|
||||
HandleHGetAllOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_hgetall\",{argsArr[0]}]");
|
||||
return 100;
|
||||
case "hgetallid":
|
||||
HandleHGetAllIdOperation(_id, argsArr, argc);
|
||||
WriteOutput(output, $"[\"{_id}_hgetallid\",{argsArr[1]}]");
|
||||
return 100;
|
||||
case "hdel":
|
||||
HandleHDelOperation(argsArr);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "hdelid":
|
||||
HandleHDelIdOperation(argsArr);
|
||||
WriteOutput(output, "Async");
|
||||
return 200;
|
||||
case "publish":
|
||||
HandlePublishOperation(_id, argsArr);
|
||||
WriteOutput(output, $"[\"{_id}_publish\"]");
|
||||
@ -292,12 +292,12 @@ namespace ArmaDragonflyClient
|
||||
HandleSetupOperation(argsArr, argc);
|
||||
WriteOutput(output, "Connection settings updated");
|
||||
return 100;
|
||||
case "version":
|
||||
WriteOutput(output, ADC_VERSION);
|
||||
return 100;
|
||||
default:
|
||||
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;
|
||||
case "version":
|
||||
WriteOutput(output, ADC_VERSION);
|
||||
return 100;
|
||||
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");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user