125 {
126 if (topic.empty()) {
127 LOG(INFO) << "MQTT Broker: Found match:";
128 LOG(INFO) << "MQTT Broker: Topic: '" << message.getTopic() << "';";
130
131 LOG(INFO) << "MQTT Broker: Distribute PUBLISH for match ...";
132 for (
auto& [clientId, clientQoS] :
clientIds) {
134 }
135 LOG(INFO) << "MQTT Broker: ... distributing PUBLISH for match completed";
136
139 LOG(INFO) << "MQTT Broker: Found parent match:";
140 LOG(INFO) << "MQTT Broker: Topic: '" << message.getTopic() << "'";
142
143 LOG(INFO) << "MQTT Broker: Distribute PUBLISH for match ...";
144 for (
auto& [clientId, clientQoS] : nextHashLevel->second.
clientIds) {
146 }
147 LOG(INFO) << "MQTT Broker: ... distributing PUBLISH for match completed";
148 }
149 } else {
150 const std::string
topicLevel = topic.substr(0, topic.find(
'/'));
151
153
156 foundNode->second.publish(message, topic);
157 }
158
161 foundNode->second.publish(message, topic);
162 }
163
166 LOG(INFO) << "MQTT Broker: Found match:";
167 LOG(INFO) << "MQTT Broker: Topic: '" << message.getTopic() << "'";
169
170 LOG(INFO) << "MQTT Broker: Distribute PUBLISH for match '" << message.getTopic() << "' ...";
171 for (
auto& [clientId, clientQoS] : foundNode->second.
clientIds) {
173 }
174 LOG(INFO) << "MQTT Broker: ... distributing PUBLISH for match completed";
175 }
176 }
177 }
static std::string toHexString(const std::vector< char > &data)
void sendPublish(const std::string &clientId, Message &message, uint8_t qoS, bool retain)