Add CreateEventMetadata and CreateStatMetadata to XPlaneBuilder
Modify the constructor to not populate by_name maps with empty names. PiperOrigin-RevId: 341497976 Change-Id: I4c1d881db5c293f38575b5ec591762c0d85bae04
This commit is contained in:
parent
e6ffdb7c6c
commit
ffc145f4cc
@ -29,15 +29,21 @@ namespace profiler {
|
||||
|
||||
XPlaneBuilder::XPlaneBuilder(XPlane* plane)
|
||||
: XStatsBuilder<XPlane>(plane, this), plane_(plane) {
|
||||
for (auto& iter : *plane->mutable_event_metadata()) {
|
||||
for (auto& id_and_metadata : *plane->mutable_event_metadata()) {
|
||||
auto& metadata = id_and_metadata.second;
|
||||
last_event_metadata_id_ =
|
||||
std::max<int64>(last_event_metadata_id_, iter.second.id());
|
||||
event_metadata_by_name_.try_emplace(iter.second.name(), &iter.second);
|
||||
std::max<int64>(last_event_metadata_id_, metadata.id());
|
||||
if (!metadata.name().empty()) {
|
||||
event_metadata_by_name_.try_emplace(metadata.name(), &metadata);
|
||||
}
|
||||
for (auto& iter : *plane->mutable_stat_metadata()) {
|
||||
}
|
||||
for (auto& id_and_metadata : *plane->mutable_stat_metadata()) {
|
||||
auto& metadata = id_and_metadata.second;
|
||||
last_stat_metadata_id_ =
|
||||
std::max<int64>(last_stat_metadata_id_, iter.second.id());
|
||||
stat_metadata_by_name_.try_emplace(iter.second.name(), &iter.second);
|
||||
std::max<int64>(last_stat_metadata_id_, metadata.id());
|
||||
if (!metadata.name().empty()) {
|
||||
stat_metadata_by_name_.try_emplace(metadata.name(), &metadata);
|
||||
}
|
||||
}
|
||||
for (XLine& line : *plane->mutable_lines()) {
|
||||
lines_by_id_.try_emplace(line.id(), &line);
|
||||
@ -50,11 +56,15 @@ XEventMetadata* XPlaneBuilder::GetOrCreateEventMetadata(int64 metadata_id) {
|
||||
return &metadata;
|
||||
}
|
||||
|
||||
XEventMetadata* XPlaneBuilder::CreateEventMetadata() {
|
||||
return GetOrCreateEventMetadata(++last_event_metadata_id_);
|
||||
}
|
||||
|
||||
XEventMetadata* XPlaneBuilder::GetOrCreateEventMetadata(
|
||||
absl::string_view name) {
|
||||
XEventMetadata*& metadata = event_metadata_by_name_[name];
|
||||
if (metadata == nullptr) {
|
||||
metadata = GetOrCreateEventMetadata(++last_event_metadata_id_);
|
||||
metadata = CreateEventMetadata();
|
||||
metadata->set_name(std::string(name));
|
||||
}
|
||||
return metadata;
|
||||
@ -63,7 +73,7 @@ XEventMetadata* XPlaneBuilder::GetOrCreateEventMetadata(
|
||||
XEventMetadata* XPlaneBuilder::GetOrCreateEventMetadata(std::string&& name) {
|
||||
XEventMetadata*& metadata = event_metadata_by_name_[name];
|
||||
if (metadata == nullptr) {
|
||||
metadata = GetOrCreateEventMetadata(++last_event_metadata_id_);
|
||||
metadata = CreateEventMetadata();
|
||||
metadata->set_name(std::move(name));
|
||||
}
|
||||
return metadata;
|
||||
@ -75,10 +85,14 @@ XStatMetadata* XPlaneBuilder::GetOrCreateStatMetadata(int64 metadata_id) {
|
||||
return &metadata;
|
||||
}
|
||||
|
||||
XStatMetadata* XPlaneBuilder::CreateStatMetadata() {
|
||||
return GetOrCreateStatMetadata(++last_stat_metadata_id_);
|
||||
}
|
||||
|
||||
XStatMetadata* XPlaneBuilder::GetOrCreateStatMetadata(absl::string_view name) {
|
||||
XStatMetadata*& metadata = stat_metadata_by_name_[name];
|
||||
if (metadata == nullptr) {
|
||||
metadata = GetOrCreateStatMetadata(++last_stat_metadata_id_);
|
||||
metadata = CreateStatMetadata();
|
||||
metadata->set_name(std::string(name));
|
||||
}
|
||||
return metadata;
|
||||
@ -87,7 +101,7 @@ XStatMetadata* XPlaneBuilder::GetOrCreateStatMetadata(absl::string_view name) {
|
||||
XStatMetadata* XPlaneBuilder::GetOrCreateStatMetadata(std::string&& name) {
|
||||
XStatMetadata*& metadata = stat_metadata_by_name_[name];
|
||||
if (metadata == nullptr) {
|
||||
metadata = GetOrCreateStatMetadata(++last_stat_metadata_id_);
|
||||
metadata = CreateStatMetadata();
|
||||
metadata->set_name(std::move(name));
|
||||
}
|
||||
return metadata;
|
||||
|
@ -279,6 +279,10 @@ class XPlaneBuilder : public XStatsBuilder<XPlane> {
|
||||
// id was unused, otherwise the builder will add events to an existing line.
|
||||
XLineBuilder GetOrCreateLine(int64 line_id);
|
||||
|
||||
// Returns a new event metadata with an automatically generated metadata_id.
|
||||
// WARNING: If calling this function, don't call GetOrCreateEventMetadata.
|
||||
XEventMetadata* CreateEventMetadata();
|
||||
|
||||
// Returns event metadata with the given id. Creates a new metadata if the id
|
||||
// was unused.
|
||||
// WARNING: If calling this function, don't call the string overloads below
|
||||
@ -296,6 +300,10 @@ class XPlaneBuilder : public XStatsBuilder<XPlane> {
|
||||
return GetOrCreateEventMetadata(absl::string_view(name));
|
||||
}
|
||||
|
||||
// Returns a new stat metadata with an automatically generated metadata_id.
|
||||
// WARNING: If calling this function, don't call GetOrCreateEventMetadata.
|
||||
XStatMetadata* CreateStatMetadata();
|
||||
|
||||
// Returns stat metadata with the given id. Creates a new metadata if the id
|
||||
// was unused.
|
||||
// WARNING: If calling this function, don't call the string overloads below
|
||||
|
Loading…
Reference in New Issue
Block a user