Skip to content

Commit baae203

Browse files
authored
Add support for MQTT retain flag
add retain flag to constructor add setRetain function
1 parent c6a3756 commit baae203

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

Diff for: lib/framework/MqttPubSub.h

+14-3
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,20 @@ class MqttPub : virtual public MqttConnector<T> {
3333
StatefulService<T>* statefulService,
3434
AsyncMqttClient* mqttClient,
3535
const String& pubTopic = "",
36+
bool retain = false,
3637
size_t bufferSize = DEFAULT_BUFFER_SIZE) :
37-
MqttConnector<T>(statefulService, mqttClient, bufferSize), _stateReader(stateReader), _pubTopic(pubTopic) {
38+
MqttConnector<T>(statefulService, mqttClient, bufferSize),
39+
_stateReader(stateReader),
40+
_pubTopic(pubTopic),
41+
_retain(retain) {
3842
MqttConnector<T>::_statefulService->addUpdateHandler([&](const String& originId) { publish(); }, false);
3943
}
4044

45+
void setRetain(const bool retain) {
46+
_retain = retain;
47+
publish();
48+
}
49+
4150
void setPubTopic(const String& pubTopic) {
4251
_pubTopic = pubTopic;
4352
publish();
@@ -51,6 +60,7 @@ class MqttPub : virtual public MqttConnector<T> {
5160
private:
5261
JsonStateReader<T> _stateReader;
5362
String _pubTopic;
63+
bool _retain;
5464

5565
void publish() {
5666
if (_pubTopic.length() > 0 && MqttConnector<T>::_mqttClient->connected()) {
@@ -64,7 +74,7 @@ class MqttPub : virtual public MqttConnector<T> {
6474
serializeJson(json, payload);
6575

6676
// publish the payload
67-
MqttConnector<T>::_mqttClient->publish(_pubTopic.c_str(), 0, false, payload.c_str());
77+
MqttConnector<T>::_mqttClient->publish(_pubTopic.c_str(), 0, _retain, payload.c_str());
6878
}
6979
}
7080
};
@@ -145,9 +155,10 @@ class MqttPubSub : public MqttPub<T>, public MqttSub<T> {
145155
AsyncMqttClient* mqttClient,
146156
const String& pubTopic = "",
147157
const String& subTopic = "",
158+
bool retain = false,
148159
size_t bufferSize = DEFAULT_BUFFER_SIZE) :
149160
MqttConnector<T>(statefulService, mqttClient, bufferSize),
150-
MqttPub<T>(stateReader, statefulService, mqttClient, pubTopic, bufferSize),
161+
MqttPub<T>(stateReader, statefulService, mqttClient, pubTopic, retain, bufferSize),
151162
MqttSub<T>(stateUpdater, statefulService, mqttClient, subTopic, bufferSize) {
152163
}
153164

0 commit comments

Comments
 (0)