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

Class AssetsManager

valdi/src/valdi/runtime/Resources/AssetsManager.hpp:52–193  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50class AssetBytesStore;
51
52class AssetsManager : public SharedPtrRefCountable, public AssetLoaderRequestHandlerListener {
53public:
54 AssetsManager(const Shared<IResourceLoader>& resourceLoader,
55 const Ref<RemoteModuleManager>& remoteModuleManager,
56 const Ref<AssetLoaderManager>& assetLoaderManager,
57 const Ref<DispatchQueue>& workerQueue,
58 MainThreadManager& mainThreadManager,
59 ILogger& logger);
60 ~AssetsManager() override;
61
62 Ref<Asset> getAsset(const AssetKey& assetKey);
63 Ref<Asset> createAssetWithBytes(const BytesView& bytes);
64 bool isAssetAlive(const AssetKey& assetKey) const;
65
66 std::optional<AssetLocation> getResolvedAssetLocation(const AssetKey& assetKey);
67
68 void setResolvedAssetLocation(const AssetKey& assetKey, const AssetLocation& assetLocation);
69
70 void onAssetCatalogChanged(const Ref<Bundle>& bundle);
71
72 void addAssetLoadObserver(const AssetKey& assetKey,
73 const std::shared_ptr<snap::valdi_core::AssetLoadObserver>& observer,
74 const Ref<Context>& context,
75 snap::valdi_core::AssetOutputType outputType,
76 int32_t preferredWidth,
77 int32_t preferredHeight,
78 const Value& attachedData);
79
80 void removeAssetLoadObserver(const AssetKey& assetKey,
81 const std::shared_ptr<snap::valdi_core::AssetLoadObserver>& observer);
82
83 void updateAssetLoadObserverPreferredSize(const AssetKey& assetKey,
84 const std::shared_ptr<snap::valdi_core::AssetLoadObserver>& observer,
85 int32_t preferredWidth,
86 int32_t preferredHeight);
87
88 static bool isAssetUrl(const StringBox& str);
89
90 void onLoad(const Ref<AssetLoaderRequestHandler>& request, const Result<Ref<LoadedAsset>>& result) override;
91
92 void setShouldRemoveUnusedLocalAssets(bool removeUnusedLocalAssets);
93
94 void setListener(AssetsManagerListener* listener);
95
96 void beginPauseUpdates();
97 void endPauseUpdates();
98
99 void flushUpdates();
100
101 // Reset every asset currently in AssetStateFailedRetryable back to AssetStateInitial and
102 // re-resolve it. A statically-mounted asset (e.g. a button icon) that failed a remote load
103 // otherwise stays failed for the whole session because only a new consumer clears the state;
104 // this gives an external trigger (app returning to foreground) a way to recover such assets.
105 void retryFailedAssets();
106
107private:
108 Shared<IResourceLoader> _resourceLoader;
109 Ref<RemoteModuleManager> _remoteModuleManager;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected