From 6b576c70e7b049a17aef74b72b4f128a333a5030 Mon Sep 17 00:00:00 2001 From: John Date: Sat, 29 Jan 2022 14:59:31 +0100 Subject: [PATCH] solved some todos, memory optimization --- src/ebusd/mqtthandler.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/ebusd/mqtthandler.cpp b/src/ebusd/mqtthandler.cpp index e4ad13bc..6243349d 100755 --- a/src/ebusd/mqtthandler.cpp +++ b/src/ebusd/mqtthandler.cpp @@ -1251,6 +1251,7 @@ void MqttHandler::run() { m_definitionsSince = 1; } if (m_connected && m_hasDefinitionTopic) { + ostringstream ostr; deque messages; m_messages->findAll("", "", "", false, true, true, true, true, true, 0, 0, false, &messages); for (const auto& message : messages) { @@ -1286,9 +1287,6 @@ void MqttHandler::run() { msgValues.set("level", message->getLevel()); msgValues.set("direction", direction); msgValues.set("messagecomment", message->getAttribute("comment")); - if (!m_publishByField) { - msgValues.set("topic", getTopic(message, "", "")); // TODO already present? - } msgValues.reduce(true); string str = msgValues.get("direction_map-"+direction, false, false); msgValues.set("direction_map", str); @@ -1325,7 +1323,7 @@ void MqttHandler::run() { } else { typeStr = "string"; } - ostringstream ostr; + ostr.str(""); ostr << "type_map-" << direction << "-" << typeStr; str = msgValues.get(ostr.str(), false, false); if (str.empty()) { @@ -1337,11 +1335,11 @@ void MqttHandler::run() { continue; } MqttReplacers values = msgValues; // need a copy here as the contents are manipulated + values.set("index", static_cast(index)); + values.set("field", fieldName); values.set("type", typeStr); values.set("type_map", str); values.set("basetype", dataType->getId()); - values.set("index", static_cast(index)); - values.set("field", fieldName); values.set("comment", field->getAttribute("comment")); values.set("unit", field->getAttribute("unit")); if (dataType->isNumeric()) { @@ -1390,9 +1388,6 @@ void MqttHandler::run() { } str = values.get("type_part-" + typePartSuffix, false, false); values.set("type_part", str); - if (m_publishByField) { - values.set("topic", getTopic(message, "", fieldName)); // TODO already present? - } values.reduce(); if (m_hasDefinitionFieldsPayload) { string value = values["field_payload"];