140 {
141#if defined(LINK_WEBSOCKET_STATIC) || defined(LINK_SUBPROTOCOL_STATIC)
142 web::websocket::client::SocketContextUpgradeFactory::link();
143#endif
144
145#ifdef LINK_SUBPROTOCOL_STATIC
147#endif
148
149 utils::Config::addStringOption("--mqtt-mapping-file", "MQTT mapping file (json format) for integration", "[path]");
150 utils::Config::addStringOption("--mqtt-session-store", "Path to file for the persistent session store", "[path]", "");
151
152 core::SNodeC::init(argc, argv);
153
154 std::string sessionStoreFileName = utils::Config::getStringOptionValue("--mqtt-session-store");
155
156#if defined(CONFIG_MQTTSUITE_INTEGRATOR_TCP_IPV4)
157 net::in::stream::legacy::Client<mqtt::mqttintegrator::SocketContextFactory>(
158 "in-mqtt",
159 [](auto& config) {
160 config.Remote::setPort(1883);
161
162 config.setRetry();
163 config.setRetryBase(1);
164 config.setReconnect();
165 config.setDisableNagleAlgorithm();
166 },
167 sessionStoreFileName)
168 .connect([](const auto& socketAddress, const core::socket::State& state) {
170 });
171#endif
172
173#if defined(CONFIG_MQTTSUITE_INTEGRATOR_TLS_IPV4)
174 net::in::stream::tls::Client<mqtt::mqttintegrator::SocketContextFactory>(
175 "in-mqtts",
176 [](auto& config) {
177 config.Remote::setPort(1883);
178
179 config.setRetry();
180 config.setRetryBase(1);
181 config.setReconnect();
182 config.setDisableNagleAlgorithm();
183 },
184 sessionStoreFileName)
185 .connect([](const auto& socketAddress, const core::socket::State& state) {
187 });
188#endif
189
190#if defined(CONFIG_MQTTSUITE_INTEGRATOR_TCP_IPV6)
191 net::in6::stream::legacy::Client<mqtt::mqttintegrator::SocketContextFactory>(
192 "in6-mqtt",
193 [](auto& config) {
194 config.Remote::setPort(1883);
195
196 config.setRetry();
197 config.setRetryBase(1);
198 config.setReconnect();
199 config.setDisableNagleAlgorithm();
200 },
201 sessionStoreFileName)
202 .connect([](const auto& socketAddress, const core::socket::State& state) {
204 });
205#endif
206
207#if defined(CONFIG_MQTTSUITE_INTEGRATOR_TLS_IPV6)
208 net::in6::stream::tls::Client<mqtt::mqttintegrator::SocketContextFactory>(
209 "in6-mqtts",
210 [](auto& config) {
211 config.Remote::setPort(1883);
212
213 config.setRetry();
214 config.setRetryBase(1);
215 config.setReconnect();
216 config.setDisableNagleAlgorithm();
217 },
218 sessionStoreFileName)
219 .connect([](const auto& socketAddress, const core::socket::State& state) {
221 });
222#endif
223
224#if defined(CONFIG_MQTTSUITE_INTEGRATOR_UNIX)
225 net::un::stream::legacy::Client<mqtt::mqttintegrator::SocketContextFactory>(
226 "un-mqtt",
227 [](auto& config) {
228 config.Remote::setSunPath("/var/mqttbroker-un-mqtt");
229
230 config.setRetry();
231 config.setRetryBase(1);
232 config.setReconnect();
233 },
234 sessionStoreFileName)
235 .connect([](const auto& socketAddress, const core::socket::State& state) {
237 });
238#endif
239
240#if defined(CONFIG_MQTTSUITE_INTEGRATOR_UNIX_TLS)
241 net::un::stream::tls::Client<mqtt::mqttintegrator::SocketContextFactory>(
242 "un-mqtts",
243 [](auto& config) {
244 config.Remote::setSunPath("/var/mqttbroker-un-mqtt");
245
246 config.setRetry();
247 config.setRetryBase(1);
248 config.setReconnect();
249 },
250 sessionStoreFileName)
251 .connect([](const auto& socketAddress, const core::socket::State& state) {
253 });
254#endif
255
256#if defined(CONFIG_MQTTSUITE_INTEGRATOR_TCP_IPV4) && defined(CONFIG_MQTTSUITE_INTEGRATOR_WS)
258 config.Remote::setPort(8080);
259
260 config.setRetry();
261 config.setRetryBase(1);
262 config.setReconnect();
263 config.setDisableNagleAlgorithm();
264 });
265#endif
266
267#if defined(CONFIG_MQTTSUITE_INTEGRATOR_TLS_IPV4) && defined(CONFIG_MQTTSUITE_INTEGRATOR_WSS)
269 config.Remote::setPort(8088);
270
271 config.setRetry();
272 config.setRetryBase(1);
273 config.setReconnect();
274 config.setDisableNagleAlgorithm();
275 });
276#endif
277
278#if defined(CONFIG_MQTTSUITE_INTEGRATOR_TCP_IPV6) && defined(CONFIG_MQTTSUITE_INTEGRATOR_WS)
280 config.Remote::setPort(8080);
281
282 config.setRetry();
283 config.setRetryBase(1);
284 config.setReconnect();
285 config.setDisableNagleAlgorithm();
286 });
287#endif
288
289#if defined(CONFIG_MQTTSUITE_INTEGRATOR_TLS_IPV6) && defined(CONFIG_MQTTSUITE_INTEGRATOR_WSS)
291 config.Remote::setPort(8088);
292
293 config.setRetry();
294 config.setRetryBase(1);
295 config.setReconnect();
296 config.setDisableNagleAlgorithm();
297 });
298#endif
299
300#if defined(CONFIG_MQTTSUITE_INTEGRATOR_UNIX) && defined(CONFIG_MQTTSUITE_INTEGRATOR_WS)
302 config.setRetry();
303 config.setRetryBase(1);
304 config.setReconnect();
305 });
306#endif
307
308#if defined(CONFIG_MQTTSUITE_INTEGRATOR_UNIX_TLS) && defined(CONFIG_MQTTSUITE_INTEGRATOR_WSS)
310 config.setRetry();
311 config.setRetryBase(1);
312 config.setReconnect();
313 });
314#endif
315
316 return core::SNodeC::start();
317}
mqtt::mqttbridge::websocket::SubProtocolFactory * mqttClientSubProtocolFactory()
static void reportState(const std::string &instanceName, const core::socket::SocketAddress &socketAddress, const core::socket::State &state)
void startClient(const std::string &name, const std::function< void(typename HttpClient::Config &)> &configurator=nullptr)