Выносим вызов хука onRegEvent в общую очередь разборки событий

Находился ранее в прямом вызове во время регистрации события, что
не верно с точки зрения распределения нагрузки и не захватывало события
из других источников, например, MQTT.
This commit is contained in:
2023-03-26 21:27:40 +03:00
parent 35829ede3b
commit 0e6a83089d
2 changed files with 7 additions and 6 deletions

View File

@@ -51,10 +51,16 @@ void handleEvent() {
if (eventBuf.length()) {
String event = selectToMarker(eventBuf, ",");
SerialPrint("i", F("EVENT"), event);
String enentIdName = selectToMarker(event, " ");
// распространяем событие через хуки
for (std::list<IoTItem*>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
(*it)->onRegEvent(findIoTItem(enentIdName));
}
//здесь нужно пропускать данное событие через условия сценариев
//и если оно есть в условии сценария и совподает
iotScen.exec(selectToMarker(event, " "));
iotScen.exec(enentIdName);
eventBuf = deleteBeforeDelimiter(eventBuf, ",");
}

View File

@@ -101,11 +101,6 @@ void IoTItem::regEvent(const String& value, const String& consoleInfo, bool erro
if (genEvent) {
generateEvent(_id, value);
// распространяем событие через хуки
for (std::list<IoTItem*>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
(*it)->onRegEvent(this);
}
// отправка события другим устройствам в сети если не было ошибки
if (_global && !error) {
String json = "{}";