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

Function getRenderRequestAttributeNamesTrigger

valdi/src/valdi/runtime/Runtime.cpp:69–106  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

67constexpr size_t kMaxTraceTriggerAttributeLength = 96;
68
69std::string getRenderRequestAttributeNamesTrigger(const RenderRequest& request, const AttributeIds& attributeIds) {
70 std::set<std::string> names;
71 struct Visitor {
72 const AttributeIds& ids;
73 std::set<std::string>& out;
74 void visit(RenderRequestEntries::EntryBase& entry) {
75 if (entry.getType() == RenderRequestEntryType::SetElementAttribute) {
76 auto& setAttr = static_cast<RenderRequestEntries::SetElementAttribute&>(entry);
77 out.insert(ids.getNameForId(setAttr.getAttributeId()).slowToString());
78 }
79 }
80 } visitor{attributeIds, names};
81 request.visitEntries(visitor);
82
83 if (names.empty()) {
84 return "render_request";
85 }
86 std::string trigger = "render_request|";
87 size_t count = 0;
88 size_t length = trigger.size();
89 for (const auto& name : names) {
90 if (count >= kMaxAttributeNamesInTrace ||
91 (length + name.size() + (count ? 1 : 0) > kMaxTraceTriggerAttributeLength)) {
92 if (count > 0) {
93 trigger += ",...";
94 }
95 break;
96 }
97 if (count != 0) {
98 trigger += ",";
99 length += 1;
100 }
101 trigger += name;
102 length += name.size();
103 ++count;
104 }
105 return trigger;
106}
107#endif
108
109} // namespace

Callers 1

processRenderRequestMethod · 0.85

Calls 3

visitEntriesMethod · 0.80
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected