MCPcopy Create free account
hub / github.com/BlueAndi/Pixelix / registerTopics

Method registerTopics

lib/TopicHandlerService/src/TopicHandlerService.cpp:121–219  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

119}
120
121void TopicHandlerService::registerTopics(const String& deviceId, const String& entityId, IPluginMaintenance* plugin)
122{
123 if ((false == deviceId.isEmpty()) &&
124 (nullptr != plugin))
125 {
126 const size_t JSON_DOC_SIZE = 1024U;
127 DynamicJsonDocument topicsDoc(JSON_DOC_SIZE);
128 JsonArray jsonTopics = topicsDoc.createNestedArray("topics");
129
130 /* Get topics from plugin. */
131 plugin->getTopics(jsonTopics);
132
133 if (true == topicsDoc.overflowed())
134 {
135 LOG_ERROR("JSON document size exceeded.");
136 }
137 /* Handle each topic */
138 else if (0U < jsonTopics.size())
139 {
140 for (JsonVariantConst jsonTopic : jsonTopics)
141 {
142 String topicName;
143 JsonObjectConst jsonExtra;
144 String extraFileName;
145 String topicAccess = DEFAULT_ACCESS;
146 ITopicHandler::GetTopicFunc getTopicFunc = nullptr;
147 ITopicHandler::SetTopicFunc setTopicFunc = nullptr;
148 ITopicHandler::UploadReqFunc uploadReqFunc = nullptr;
149
150 /* Topic specific parameter available? */
151 if (true == jsonTopic.is<JsonObjectConst>())
152 {
153 JsonVariantConst jsonTopicName = jsonTopic["name"];
154 JsonVariantConst jsonTopicAccess = jsonTopic["access"];
155 JsonVariantConst jsonExtraVar = jsonTopic["extra"];
156
157 if (true == jsonTopicName.is<String>())
158 {
159 topicName = jsonTopicName.as<const char*>();
160 }
161
162 if (true == jsonTopicAccess.is<String>())
163 {
164 topicAccess = jsonTopicAccess.as<const char*>();
165 }
166
167 if (true == jsonExtraVar.is<JsonObjectConst>())
168 {
169 jsonExtra = jsonExtraVar.as<JsonObjectConst>();
170 }
171 else if (true == jsonExtraVar.is<String>())
172 {
173 extraFileName = jsonExtraVar.as<const char*>();
174 }
175 else
176 {
177 /* Skip */
178 ;

Callers 2

registerTopicsByUIDMethod · 0.80
registerTopicsByAliasMethod · 0.80

Calls 4

sizeMethod · 0.80
c_strMethod · 0.80
isEmptyMethod · 0.45
getTopicsMethod · 0.45

Tested by

no test coverage detected