Merge remote-tracking branch 'upstream/mqtt-publish-json-std-bind-to-lambda' into integration

This commit is contained in:
J. Nick Koston
2026-03-19 00:42:48 -10:00
+2 -3
View File
@@ -405,15 +405,14 @@ template<typename... Ts> class MQTTPublishJsonAction : public Action<Ts...> {
void set_payload(std::function<void(Ts..., JsonObject)> payload) { this->payload_ = payload; }
void play(const Ts &...x) override {
auto f = std::bind(&MQTTPublishJsonAction<Ts...>::encode_, this, x..., std::placeholders::_1);
auto topic = this->topic_.value(x...);
auto qos = this->qos_.value(x...);
auto retain = this->retain_.value(x...);
this->parent_->publish_json(topic, f, qos, retain);
this->parent_->publish_json(
topic, [this, x...](JsonObject root) { this->payload_(x..., root); }, qos, retain);
}
protected:
void encode_(Ts... x, JsonObject root) { this->payload_(x..., root); }
std::function<void(Ts..., JsonObject)> payload_;
MQTTClientComponent *parent_;
};