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:
Jose Baiocchi 2020-11-09 15:29:15 -08:00 committed by TensorFlower Gardener
parent e6ffdb7c6c
commit ffc145f4cc
2 changed files with 32 additions and 10 deletions

View File

@ -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;

View File

@ -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