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

Class SyncAssetLoadObserver

valdi/test/runtime/AssetsManager_tests.cpp:45–105  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

43namespace ValdiTest {
44
45class SyncAssetLoadObserver : public SharedPtrRefCountable, public snap::valdi_core::AssetLoadObserver {
46public:
47 SyncAssetLoadObserver() {}
48
49 void onLoad(const Shared<snap::valdi_core::Asset>& asset,
50 const Valdi::Value& loadedAsset,
51 const std::optional<Valdi::StringBox>& error) override {
52 SC_ASSERT(_allowMultipleResults || _results.empty());
53
54 if (error) {
55 _results.emplace_back(Error(error.value()));
56 } else {
57 _results.emplace_back(loadedAsset);
58 }
59 }
60
61 Result<Value> load(const Ref<MainQueue>& mainQueue,
62 const Ref<Asset>& asset,
63 int32_t preferredWidth = 0,
64 int32_t preferredHeight = 0,
65 Value filter = Value(),
66 snap::valdi_core::AssetOutputType outputType = snap::valdi_core::AssetOutputType::Dummy) {
67 asset->addLoadObserver(strongRef(this), outputType, preferredWidth, preferredHeight, filter);
68
69 mainQueue->runUntilTrue([&]() { return !_results.empty(); });
70
71 if (_results.empty()) {
72 return Error("Timed out");
73 }
74
75 return _results[_results.size() - 1];
76 }
77
78 void unload(const Ref<Asset>& asset) {
79 asset->removeLoadObserver(strongRef(this));
80 }
81
82 void setAllowMultipleResults(bool allowMultipleResults) {
83 _allowMultipleResults = allowMultipleResults;
84 }
85
86 std::vector<Result<Value>> getResults() const {
87 return _results;
88 }
89
90 static Result<Value> loadSync(
91 const Ref<MainQueue>& mainQueue,
92 const Ref<Asset>& asset,
93 int32_t preferredWidth,
94 int32_t preferredHeight,
95 Value filter = Value(),
96 snap::valdi_core::AssetOutputType outputType = snap::valdi_core::AssetOutputType::Dummy) {
97 auto observer = makeShared<SyncAssetLoadObserver>();
98
99 return observer->load(mainQueue, asset, preferredWidth, preferredHeight, filter, outputType);
100 }
101
102private:

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected