Compare commits
2 Commits
b83c22601f
...
033630977a
Author | SHA1 | Date | |
---|---|---|---|
![]() |
033630977a | ||
![]() |
38639b50c7 |
@ -20,8 +20,10 @@ 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);
|
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())
|
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, savedb, setup, version");
|
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;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user