68 const CLI::App* sessionApp = subProtocolContext->getSocketConnection()->getConfigInstance()->getSection(
"session",
true,
true);
69 const CLI::App* subApp = subProtocolContext->getSocketConnection()->getConfigInstance()->getSection(
"sub",
true,
true);
70 const CLI::App* pubApp = subProtocolContext->getSocketConnection()->getConfigInstance()->getSection(
"pub",
true,
true);
72 subApp = (subApp !=
nullptr && (*subApp)[
"--topic"]->count() > 0) ? subApp :
nullptr;
73 pubApp = (pubApp !=
nullptr && (*pubApp)[
"--topic"]->count() > 0 && (*pubApp)[
"--message"]->count() > 0) ? pubApp :
nullptr;
75 iot::
mqtt::client::SubProtocol* subProtocol =
nullptr;
77 if (subApp !=
nullptr || pubApp !=
nullptr) {
78 subProtocol =
new iot::mqtt::client::SubProtocol(
81 new ::mqtt::mqttcli::lib::Mqtt(subProtocolContext->getSocketConnection()->getConnectionName(),
82 sessionApp !=
nullptr ? sessionApp->get_option(
"--client-id")->as<std::string>() :
"",
83 sessionApp !=
nullptr ? sessionApp->get_option(
"--qos")->as<uint8_t>() : 0,
84 sessionApp !=
nullptr ? sessionApp->get_option(
"--keep-alive")->as<uint16_t>() : 60,
85 sessionApp !=
nullptr ? !sessionApp->get_option(
"--retain-session")->as<
bool>() :
true,
86 sessionApp !=
nullptr ? sessionApp->get_option(
"--will-topic")->as<std::string>() :
"",
87 sessionApp !=
nullptr ? sessionApp->get_option(
"--will-message")->as<std::string>() :
"",
88 sessionApp !=
nullptr ? sessionApp->get_option(
"--will-qos")->as<uint8_t>() : 0,
89 sessionApp !=
nullptr ? sessionApp->get_option(
"--will-retain")->as<
bool>() :
false,
90 sessionApp !=
nullptr ? sessionApp->get_option(
"--username")->as<std::string>() :
"",
91 sessionApp !=
nullptr ? sessionApp->get_option(
"--password")->as<std::string>() :
"",
92 subApp !=
nullptr ? subApp->get_option(
"--topic")->as<std::list<std::string>>()
93 : std::list<std::string>(),
94 pubApp !=
nullptr ? pubApp->get_option(
"--topic")->as<std::string>() :
"",
95 pubApp !=
nullptr ? pubApp->get_option(
"--message")->as<std::string>() :
"",
96 pubApp !=
nullptr ? pubApp->get_option(
"--retain")->as<
bool>() :
false));
98 VLOG(0) <<
"[" << Color::Code::FG_RED <<
"Error" << Color::Code::FG_DEFAULT <<
"] "
99 << subProtocolContext->getSocketConnection()->getConnectionName() <<
": one of 'sub' or 'pub' is required";