MCPcopy Create free account
hub / github.com/Snapchat/Valdi / resolveAssetLocation

Method resolveAssetLocation

valdi/src/valdi/runtime/Resources/AssetsManager.cpp:339–379  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

337}
338
339void AssetsManager::resolveAssetLocation(AssetsManagerTransaction& transaction,
340 const AssetKey& assetKey,
341 const Ref<ManagedAsset>& managedAsset) {
342 SC_ASSERT(managedAsset->getState() == AssetStateInitial);
343 managedAsset->setState(AssetStateResolvingLocation);
344
345 auto resolveId = ++_assetResolveIdSequence;
346 managedAsset->setResolveId(resolveId);
347
348 if constexpr (kEnableAssetsLogs) {
349 VALDI_INFO(_logger, "Resolving asset location of '{}'", assetKey);
350 }
351
352 const auto& bundle = assetKey.getBundle();
353 if (bundle != nullptr) {
354 if (bundle->hasRemoteAssets()) {
355 transaction.releaseLock();
356 _remoteModuleManager->loadResources(
357 bundle->getName(), [assetKey, weakSelf = weakRef(this), resolveId](auto result) {
358 auto self = strongRef(weakSelf);
359 if (self == nullptr) {
360 return;
361 }
362
363 self->_workerQueue->async([assetKey, self, result, resolveId]() {
364 self->onLoadingRemoteResourcesCompleted(assetKey, result, resolveId);
365 });
366 });
367 } else {
368 transaction.releaseLock();
369 _workerQueue->async([assetKey, self = strongSmallRef(this), resolveId]() {
370 self->resolveLocalAssetLocationAndUpdate(assetKey, resolveId);
371 });
372 }
373 } else {
374 // For URL assets, the resolved asset location is always a URL
375 updateAssetLocation(assetKey, managedAsset, AssetLocation(assetKey.getUrl(), false));
376
377 scheduleAssetUpdate(transaction, assetKey);
378 }
379}
380
381Result<AssetLocation> AssetsManager::resolveRemoteAssetLocation(const AssetKey& assetKey,
382 const Result<Ref<RemoteModuleResources>>& result) {

Callers

nothing calls this directly

Calls 15

weakRefFunction · 0.85
strongRefFunction · 0.85
strongSmallRefFunction · 0.85
AssetLocationClass · 0.85
setResolveIdMethod · 0.80
getBundleMethod · 0.80
hasRemoteAssetsMethod · 0.80
loadResourcesMethod · 0.80
getUrlMethod · 0.80
getStateMethod · 0.65

Tested by

no test coverage detected