############################################################################## ################## Serialization/Deserialization ########################### ############################################################################## ! Saves as XML. */
| 1131 | Saves as XML. |
| 1132 | */ |
| 1133 | void MQTTClient::save(QXmlStreamWriter* writer) const { |
| 1134 | writer->writeStartElement(QStringLiteral("MQTTClient")); |
| 1135 | writeBasicAttributes(writer); |
| 1136 | writeCommentElement(writer); |
| 1137 | |
| 1138 | // general |
| 1139 | writer->writeStartElement(QStringLiteral("general")); |
| 1140 | writer->writeAttribute(QStringLiteral("subscriptionCount"), QString::number(m_MQTTSubscriptions.size())); |
| 1141 | writer->writeAttribute(QStringLiteral("updateType"), QString::number(static_cast<int>(m_updateType))); |
| 1142 | writer->writeAttribute(QStringLiteral("readingType"), QString::number(static_cast<int>(m_readingType))); |
| 1143 | writer->writeAttribute(QStringLiteral("keepValues"), QString::number(m_keepNValues)); |
| 1144 | |
| 1145 | if (m_updateType == UpdateType::TimeInterval) |
| 1146 | writer->writeAttribute(QStringLiteral("updateInterval"), QString::number(m_updateInterval)); |
| 1147 | |
| 1148 | if (m_readingType != ReadingType::TillEnd) |
| 1149 | writer->writeAttribute(QStringLiteral("sampleSize"), QString::number(m_sampleSize)); |
| 1150 | |
| 1151 | writer->writeAttribute(QStringLiteral("host"), m_client->hostname()); |
| 1152 | writer->writeAttribute(QStringLiteral("port"), QString::number(m_client->port())); |
| 1153 | writer->writeAttribute(QStringLiteral("username"), m_client->username()); |
| 1154 | writer->writeAttribute(QStringLiteral("password"), m_client->password()); |
| 1155 | writer->writeAttribute(QStringLiteral("clientId"), m_client->clientId()); |
| 1156 | writer->writeAttribute(QStringLiteral("useRetain"), QString::number(m_MQTTRetain)); |
| 1157 | writer->writeAttribute(QStringLiteral("useWill"), QString::number(m_MQTTWill.enabled)); |
| 1158 | writer->writeAttribute(QStringLiteral("willTopic"), m_MQTTWill.willTopic); |
| 1159 | writer->writeAttribute(QStringLiteral("willOwnMessage"), m_MQTTWill.willOwnMessage); |
| 1160 | writer->writeAttribute(QStringLiteral("willQoS"), QString::number(m_MQTTWill.willQoS)); |
| 1161 | writer->writeAttribute(QStringLiteral("willRetain"), QString::number(m_MQTTWill.willRetain)); |
| 1162 | writer->writeAttribute(QStringLiteral("willMessageType"), QString::number(static_cast<int>(m_MQTTWill.willMessageType))); |
| 1163 | writer->writeAttribute(QStringLiteral("willUpdateType"), QString::number(static_cast<int>(m_MQTTWill.willUpdateType))); |
| 1164 | writer->writeAttribute(QStringLiteral("willTimeInterval"), QString::number(m_MQTTWill.willTimeInterval)); |
| 1165 | |
| 1166 | for (int i = 0; i < m_MQTTWill.willStatistics.count(); ++i) |
| 1167 | writer->writeAttribute(QStringLiteral("willStatistics") + QString::number(i), QString::number(m_MQTTWill.willStatistics[i])); |
| 1168 | writer->writeAttribute(QStringLiteral("useID"), QString::number(m_MQTTUseID)); |
| 1169 | writer->writeAttribute(QStringLiteral("useAuthentication"), QString::number(m_MQTTUseAuthentication)); |
| 1170 | |
| 1171 | writer->writeEndElement(); |
| 1172 | |
| 1173 | // filter |
| 1174 | m_filter->save(writer); |
| 1175 | |
| 1176 | // MQTTSubscription |
| 1177 | for (auto* sub : children<MQTTSubscription>(AbstractAspect::ChildIndexFlag::IncludeHidden)) |
| 1178 | sub->save(writer); |
| 1179 | |
| 1180 | writer->writeEndElement(); // "MQTTClient" |
| 1181 | } |
| 1182 | |
| 1183 | /*! |
| 1184 | Loads from XML. |