@@ -33,11 +33,20 @@ class MqttPub : virtual public MqttConnector<T> {
33
33
StatefulService<T>* statefulService,
34
34
AsyncMqttClient* mqttClient,
35
35
const String& pubTopic = " " ,
36
+ bool retain = false ,
36
37
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) {
38
42
MqttConnector<T>::_statefulService->addUpdateHandler ([&](const String& originId) { publish (); }, false );
39
43
}
40
44
45
+ void setRetain (const bool retain) {
46
+ _retain = retain;
47
+ publish ();
48
+ }
49
+
41
50
void setPubTopic (const String& pubTopic) {
42
51
_pubTopic = pubTopic;
43
52
publish ();
@@ -51,6 +60,7 @@ class MqttPub : virtual public MqttConnector<T> {
51
60
private:
52
61
JsonStateReader<T> _stateReader;
53
62
String _pubTopic;
63
+ bool _retain;
54
64
55
65
void publish () {
56
66
if (_pubTopic.length () > 0 && MqttConnector<T>::_mqttClient->connected ()) {
@@ -64,7 +74,7 @@ class MqttPub : virtual public MqttConnector<T> {
64
74
serializeJson (json, payload);
65
75
66
76
// 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 ());
68
78
}
69
79
}
70
80
};
@@ -145,9 +155,10 @@ class MqttPubSub : public MqttPub<T>, public MqttSub<T> {
145
155
AsyncMqttClient* mqttClient,
146
156
const String& pubTopic = " " ,
147
157
const String& subTopic = " " ,
158
+ bool retain = false ,
148
159
size_t bufferSize = DEFAULT_BUFFER_SIZE) :
149
160
MqttConnector<T>(statefulService, mqttClient, bufferSize),
150
- MqttPub<T>(stateReader, statefulService, mqttClient, pubTopic, bufferSize),
161
+ MqttPub<T>(stateReader, statefulService, mqttClient, pubTopic, retain, bufferSize),
151
162
MqttSub<T>(stateUpdater, statefulService, mqttClient, subTopic, bufferSize) {
152
163
}
153
164
0 commit comments