Buffer websocket messages until they were processed

This commit is contained in:
WarmUpTill
2024-01-21 14:33:07 +01:00
committed by WarmUpTill
parent cf5f338902
commit 9b34af98fd
4 changed files with 34 additions and 16 deletions

View File

@@ -22,32 +22,34 @@ const static std::map<MacroConditionWebsocket::Type, std::string>
bool MacroConditionWebsocket::CheckCondition()
{
std::vector<std::string> messages;
std::vector<WSMessage> *messages;
switch (_type) {
case MacroConditionWebsocket::Type::REQUEST:
messages = GetWebsocketMessages();
messages = &GetWebsocketMessages();
break;
case MacroConditionWebsocket::Type::EVENT: {
auto connection = _connection.lock();
if (!connection) {
return false;
}
messages = connection->Events();
messages = &connection->Events();
break;
}
default:
break;
}
for (const auto &msg : messages) {
for (auto &m : *messages) {
if (_regex.Enabled()) {
if (_regex.Matches(msg, _message)) {
SetVariableValue(msg);
if (_regex.Matches(m.message, _message)) {
SetVariableValue(m.message);
m.processed = true;
return true;
}
} else {
if (msg == std::string(_message)) {
SetVariableValue(msg);
if (m.message == std::string(_message)) {
SetVariableValue(m.message);
m.processed = true;
return true;
}
}