58 {
59 const net::config::ConfigInstance* configInstance = subProtocolContext->getSocketConnection()->getConfigInstance();
60
61 const lib::ConfigSession* configSession = configInstance->getSubCommand<lib::ConfigSession>();
62 const lib::ConfigSubscribe* configSubscribe = configInstance->getSubCommand<lib::ConfigSubscribe>();
63 const lib::ConfigDatabase* configDatabase = configInstance->getSubCommand<lib::ConfigDatabase>();
64 const lib::ConfigStorage* configStorage = configDatabase->getSubCommand<lib::ConfigStorage>();
66 lib::StoragePlan storagePlan;
67 try {
69 } catch (const std::exception& exception) {
70 VLOG(0) << subProtocolContext->getSocketConnection()->getConnectionName() << " MQTTStore startup failed: " << exception.what();
71 throw;
72 }
73
74 return new iot::mqtt::client::SubProtocol(
75 subProtocolContext,
76 getName(),
77 new mqtt::mqttstore::lib::Mqtt(subProtocolContext->getSocketConnection()->getConnectionName(),
78 configSession->getClientId(),
79 configSession->getQoS(),
80 configSession->getKeepAlive(),
81 !configSession->getRetainSession(),
82 configSession->getWillTopic(),
83 configSession->getWillMessage(),
84 configSession->getWillQoS(),
85 configSession->getWillRetain(),
86 configSession->getUsername(),
87 configSession->getPassword(),
88 configSubscribe->getTopic(),
89 {.database = configDatabase->getDatabase(),
90 .username = configDatabase->getUsername(),
91 .password = configDatabase->getPassword(),
92 .host = configDatabase->getHost(),
93 .port = configDatabase->getPort(),
94 .socket = configDatabase->getSocket(),
95 .flags = configDatabase->getFlags()},
96 storageOptions.rawTable,
97 storageOptions.autoCreateRawTable,
98 std::move(storagePlan),
99 configSession->getSessionStore()));
100 }
static StoragePlan fromFile(const std::string &fileName)
StorageOptions getStorageOptions(const mqtt::mqttstore::lib::ConfigStorage *configStorage)