| 1293 | } |
| 1294 | |
| 1295 | std::optional<DataStorageBridge::Json> DataStorageBridge::GetNodeAvailableContexts(const std::string& uid) const |
| 1296 | { |
| 1297 | std::lock_guard<std::mutex> lock(m_Mutex); |
| 1298 | return this->DispatchTask<std::optional<Json>>([this, uid]() |
| 1299 | { |
| 1300 | auto dataStorage = m_DataStorage.Lock(); |
| 1301 | if (dataStorage.IsNull()) |
| 1302 | { |
| 1303 | return std::optional<Json>(std::nullopt); |
| 1304 | } |
| 1305 | |
| 1306 | auto node = m_UidMapper->FindNodeByUid(uid); |
| 1307 | if (node == nullptr) |
| 1308 | { |
| 1309 | return std::optional<Json>(std::nullopt); |
| 1310 | } |
| 1311 | |
| 1312 | Json contexts = Json::array(); |
| 1313 | |
| 1314 | // Add null for default context (always available) |
| 1315 | contexts.push_back(nullptr); |
| 1316 | |
| 1317 | // Add named contexts from the node |
| 1318 | auto contextNames = node->GetPropertyContextNames(); |
| 1319 | for (const auto& contextName : contextNames) |
| 1320 | { |
| 1321 | contexts.push_back(contextName); |
| 1322 | } |
| 1323 | |
| 1324 | return std::optional<Json>(contexts); |
| 1325 | }); |
| 1326 | } |
| 1327 | |
| 1328 | DataStorageBridge::Json DataStorageBridge::NodeToJson(DataNode* node) const |
| 1329 | { |
no test coverage detected