342 {
343 core::SNodeC::init(argc, argv);
344
345#if defined(LINK_WEBSOCKET_STATIC) || defined(LINK_SUBPROTOCOL_STATIC)
346 web::websocket::client::SocketContextUpgradeFactory::link();
347#endif
348
349#ifdef LINK_SUBPROTOCOL_STATIC
351#endif
352
353 utils::Config::app->get_formatter()->label("SUBCOMMAND", "APPLICATION | CONNECTION | INSTANCE");
354 utils::Config::app->get_formatter()->label("SUBCOMMANDS", "APPLICATION | CONNECTION | INSTANCES");
355
356 createConfig(utils::Config::addInstance(
"session",
"MQTT session behavior",
"Connection",
true),
357 utils::Config::addInstance("sub", "Configuration for application mqttsub", "Applications", true),
358 utils::Config::addInstance("pub", "Configuration for application mqttpub", "Applications", true));
359
360
361
362#if defined(CONFIG_MQTTSUITE_CLI_TCP_IPV4)
363 net::in::stream::legacy::Client<mqtt::mqttcli::SocketContextFactory>("in-mqtt", [](auto& config) {
364 config.Remote::setPort(1883);
365
366 config.setRetry();
367 config.setRetryBase(1);
368 config.setDisableNagleAlgorithm();
369
371 }).connect([](const auto& socketAddress, const core::socket::State& state) {
373 });
374#endif
375
376#if defined(CONFIG_MQTTSUITE_CLI_TLS_IPV4)
377 net::in::stream::tls::Client<mqtt::mqttcli::SocketContextFactory>("in-mqtts", [](auto& config) {
378 config.Remote::setPort(1883);
379
380 config.setRetry();
381 config.setRetryBase(1);
382 config.setDisableNagleAlgorithm();
383 config.setDisabled();
384
386 }).connect([](const auto& socketAddress, const core::socket::State& state) {
388 });
389#endif
390
391#if defined(CONFIG_MQTTSUITE_CLI_TCP_IPV6)
392 net::in6::stream::legacy::Client<mqtt::mqttcli::SocketContextFactory>("in6-mqtt", [](auto& config) {
393 config.Remote::setPort(1883);
394
395 config.setRetry();
396 config.setRetryBase(1);
397 config.setDisableNagleAlgorithm();
398 config.setDisabled();
399
401 }).connect([](const auto& socketAddress, const core::socket::State& state) {
403 });
404#endif
405
406#if defined(CONFIG_MQTTSUITE_CLI_TLS_IPV6)
407 net::in6::stream::tls::Client<mqtt::mqttcli::SocketContextFactory>("in6-mqtts", [](auto& config) {
408 config.Remote::setPort(1883);
409
410 config.setRetry();
411 config.setRetryBase(1);
412 config.setDisableNagleAlgorithm();
413 config.setDisabled();
414
416 }).connect([](const auto& socketAddress, const core::socket::State& state) {
418 });
419#endif
420
421#if defined(CONFIG_MQTTSUITE_CLI_UNIX)
422 net::un::stream::legacy::Client<mqtt::mqttcli::SocketContextFactory>("un-mqtt", [](auto& config) {
423 config.Remote::setSunPath("/var/mqttbroker-un-mqtt");
424
425 config.setRetry();
426 config.setRetryBase(1);
427 config.setDisabled();
428
430 }).connect([](const auto& socketAddress, const core::socket::State& state) {
432 });
433#endif
434
435#if defined(CONFIG_MQTTSUITE_CLI_UNIX_TLS)
436 net::un::stream::tls::Client<mqtt::mqttcli::SocketContextFactory>("un-mqtts", [](auto& config) {
437 config.Remote::setSunPath("/var/mqttbroker-un-mqtts");
438
439 config.setRetry();
440 config.setRetryBase(1);
441 config.setDisabled();
442
444 }).connect([](const auto& socketAddress, const core::socket::State& state) {
446 });
447#endif
448
449#if defined(CONFIG_MQTTSUITE_CLI_TCP_IPV4) && defined(CONFIG_MQTTSUITE_CLI_WS)
451 config.Remote::setPort(8080);
452
453 config.setRetry();
454 config.setRetryBase(1);
455 config.setDisableNagleAlgorithm();
456 config.setDisabled();
457
459 });
460#endif
461
462#if defined(CONFIG_MQTTSUITE_CLI_TLS_IPV4) && defined(CONFIG_MQTTSUITE_CLI_WSS)
464 config.Remote::setPort(8088);
465
466 config.setRetry();
467 config.setRetryBase(1);
468 config.setDisableNagleAlgorithm();
469 config.setDisabled();
470
472 });
473#endif
474
475#if defined(CONFIG_MQTTSUITE_CLI_TCP_IPV6) && defined(CONFIG_MQTTSUITE_CLI_WS)
477 config.Remote::setPort(8080);
478
479 config.setRetry();
480 config.setRetryBase(1);
481 config.setDisableNagleAlgorithm();
482 config.setDisabled();
483
485 });
486#endif
487
488#if defined(CONFIG_MQTTSUITE_CLI_TLS_IPV6) && defined(CONFIG_MQTTSUITE_CLI_WSS)
490 config.Remote::setPort(8088);
491
492 config.setReconnect();
493 config.setRetry();
494 config.setRetryBase(1);
495 config.setDisableNagleAlgorithm();
496 config.setDisabled();
497
499 });
500#endif
501
502#if defined(CONFIG_MQTTSUITE_CLI_UNIX) && defined(CONFIG_MQTTSUITE_CLI_WS)
504 config.setRetry();
505 config.setRetryBase(1);
506 config.setReconnect();
507 config.setDisabled();
508
510 });
511#endif
512
513#if defined(CONFIG_MQTTSUITE_CLI_UNIX_TLS) && defined(CONFIG_MQTTSUITE_CLI_WSS)
515 config.setRetry();
516 config.setRetryBase(1);
517 config.setReconnect();
518 config.setDisabled();
519
521 });
522#endif
523
524 return core::SNodeC::start();
525}
mqtt::mqttbridge::websocket::SubProtocolFactory * mqttClientSubProtocolFactory()
static void createWSConfig(net::config::ConfigInstance &config)
void startClient(const std::string &name, const std::function< void(typename HttpClient::Config &)> &configurator)
static void reportState(const std::string &instanceName, const core::socket::SocketAddress &socketAddress, const core::socket::State &state)