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

Method doUpdateAssetConsumer

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

Source from the content-addressed store, hash-verified

574}
575
576void AssetsManager::doUpdateAssetConsumer(AssetsManagerTransaction& transaction,
577 const AssetKey& assetKey,
578 const Ref<ManagedAsset>& managedAsset,
579 const Ref<AssetConsumer>& consumerToUpdate) {
580 if (consumerToUpdate->getObserver() == nullptr) {
581 removeAssetConsumer(transaction, managedAsset, consumerToUpdate);
582 return;
583 }
584
585 switch (consumerToUpdate->getState()) {
586 case AssetConsumerStateInitial: {
587 if (managedAsset->getState() == AssetStateFailedRetryable ||
588 managedAsset->getState() == AssetStateFailedPermanently) {
589 consumerToUpdate->setState(AssetConsumerStateFailed);
590 consumerToUpdate->setLoadedAsset(managedAsset->getResolvedAssetLocation().error());
591 scheduleAssetUpdate(transaction, assetKey);
592 } else {
593 loadAssetForConsumerAtResolvedLocation(transaction,
594 assetKey,
595 managedAsset,
596 consumerToUpdate,
597 managedAsset->getResolvedAssetLocation().value());
598 }
599 } break;
600 case AssetConsumerStateLoading: {
601 SC_ASSERT(consumerToUpdate->getObserver() == nullptr);
602 removeAssetConsumer(transaction, managedAsset, consumerToUpdate);
603 } break;
604 case AssetConsumerStateFailed: {
605 notifyAssetConsumer(transaction,
606 assetKey,
607 managedAsset,
608 consumerToUpdate,
609 nullptr,
610 consumerToUpdate->getLoadedAsset().error());
611 } break;
612 case AssetConsumerStateLoaded: {
613 notifyAssetConsumer(transaction,
614 assetKey,
615 managedAsset,
616 consumerToUpdate,
617 consumerToUpdate->getLoadedAsset().value(),
618 std::nullopt);
619 } break;
620 case AssetConsumerStateRemoved:
621 break;
622 }
623}
624
625void AssetsManager::notifyAssetConsumer(AssetsManagerTransaction& transaction,
626 const AssetKey& assetKey,

Callers

nothing calls this directly

Calls 7

getLoadedAssetMethod · 0.80
getStateMethod · 0.65
errorMethod · 0.65
valueMethod · 0.65
setStateMethod · 0.45
setLoadedAssetMethod · 0.45

Tested by

no test coverage detected