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)
|
XPlaneBuilder::XPlaneBuilder(XPlane* plane)
|
||||||
: XStatsBuilder<XPlane>(plane, this), plane_(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_ =
|
last_event_metadata_id_ =
|
||||||
std::max<int64>(last_event_metadata_id_, iter.second.id());
|
std::max<int64>(last_event_metadata_id_, metadata.id());
|
||||||
event_metadata_by_name_.try_emplace(iter.second.name(), &iter.second);
|
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_ =
|
last_stat_metadata_id_ =
|
||||||
std::max<int64>(last_stat_metadata_id_, iter.second.id());
|
std::max<int64>(last_stat_metadata_id_, metadata.id());
|
||||||
stat_metadata_by_name_.try_emplace(iter.second.name(), &iter.second);
|
if (!metadata.name().empty()) {
|
||||||
|
stat_metadata_by_name_.try_emplace(metadata.name(), &metadata);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (XLine& line : *plane->mutable_lines()) {
|
for (XLine& line : *plane->mutable_lines()) {
|
||||||
lines_by_id_.try_emplace(line.id(), &line);
|
lines_by_id_.try_emplace(line.id(), &line);
|
||||||
@ -50,11 +56,15 @@ XEventMetadata* XPlaneBuilder::GetOrCreateEventMetadata(int64 metadata_id) {
|
|||||||
return &metadata;
|
return &metadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XEventMetadata* XPlaneBuilder::CreateEventMetadata() {
|
||||||
|
return GetOrCreateEventMetadata(++last_event_metadata_id_);
|
||||||
|
}
|
||||||
|
|
||||||
XEventMetadata* XPlaneBuilder::GetOrCreateEventMetadata(
|
XEventMetadata* XPlaneBuilder::GetOrCreateEventMetadata(
|
||||||
absl::string_view name) {
|
absl::string_view name) {
|
||||||
XEventMetadata*& metadata = event_metadata_by_name_[name];
|
XEventMetadata*& metadata = event_metadata_by_name_[name];
|
||||||
if (metadata == nullptr) {
|
if (metadata == nullptr) {
|
||||||
metadata = GetOrCreateEventMetadata(++last_event_metadata_id_);
|
metadata = CreateEventMetadata();
|
||||||
metadata->set_name(std::string(name));
|
metadata->set_name(std::string(name));
|
||||||
}
|
}
|
||||||
return metadata;
|
return metadata;
|
||||||
@ -63,7 +73,7 @@ XEventMetadata* XPlaneBuilder::GetOrCreateEventMetadata(
|
|||||||
XEventMetadata* XPlaneBuilder::GetOrCreateEventMetadata(std::string&& name) {
|
XEventMetadata* XPlaneBuilder::GetOrCreateEventMetadata(std::string&& name) {
|
||||||
XEventMetadata*& metadata = event_metadata_by_name_[name];
|
XEventMetadata*& metadata = event_metadata_by_name_[name];
|
||||||
if (metadata == nullptr) {
|
if (metadata == nullptr) {
|
||||||
metadata = GetOrCreateEventMetadata(++last_event_metadata_id_);
|
metadata = CreateEventMetadata();
|
||||||
metadata->set_name(std::move(name));
|
metadata->set_name(std::move(name));
|
||||||
}
|
}
|
||||||
return metadata;
|
return metadata;
|
||||||
@ -75,10 +85,14 @@ XStatMetadata* XPlaneBuilder::GetOrCreateStatMetadata(int64 metadata_id) {
|
|||||||
return &metadata;
|
return &metadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XStatMetadata* XPlaneBuilder::CreateStatMetadata() {
|
||||||
|
return GetOrCreateStatMetadata(++last_stat_metadata_id_);
|
||||||
|
}
|
||||||
|
|
||||||
XStatMetadata* XPlaneBuilder::GetOrCreateStatMetadata(absl::string_view name) {
|
XStatMetadata* XPlaneBuilder::GetOrCreateStatMetadata(absl::string_view name) {
|
||||||
XStatMetadata*& metadata = stat_metadata_by_name_[name];
|
XStatMetadata*& metadata = stat_metadata_by_name_[name];
|
||||||
if (metadata == nullptr) {
|
if (metadata == nullptr) {
|
||||||
metadata = GetOrCreateStatMetadata(++last_stat_metadata_id_);
|
metadata = CreateStatMetadata();
|
||||||
metadata->set_name(std::string(name));
|
metadata->set_name(std::string(name));
|
||||||
}
|
}
|
||||||
return metadata;
|
return metadata;
|
||||||
@ -87,7 +101,7 @@ XStatMetadata* XPlaneBuilder::GetOrCreateStatMetadata(absl::string_view name) {
|
|||||||
XStatMetadata* XPlaneBuilder::GetOrCreateStatMetadata(std::string&& name) {
|
XStatMetadata* XPlaneBuilder::GetOrCreateStatMetadata(std::string&& name) {
|
||||||
XStatMetadata*& metadata = stat_metadata_by_name_[name];
|
XStatMetadata*& metadata = stat_metadata_by_name_[name];
|
||||||
if (metadata == nullptr) {
|
if (metadata == nullptr) {
|
||||||
metadata = GetOrCreateStatMetadata(++last_stat_metadata_id_);
|
metadata = CreateStatMetadata();
|
||||||
metadata->set_name(std::move(name));
|
metadata->set_name(std::move(name));
|
||||||
}
|
}
|
||||||
return metadata;
|
return metadata;
|
||||||
|
@ -279,6 +279,10 @@ class XPlaneBuilder : public XStatsBuilder<XPlane> {
|
|||||||
// id was unused, otherwise the builder will add events to an existing line.
|
// id was unused, otherwise the builder will add events to an existing line.
|
||||||
XLineBuilder GetOrCreateLine(int64 line_id);
|
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
|
// Returns event metadata with the given id. Creates a new metadata if the id
|
||||||
// was unused.
|
// was unused.
|
||||||
// WARNING: If calling this function, don't call the string overloads below
|
// 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));
|
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
|
// Returns stat metadata with the given id. Creates a new metadata if the id
|
||||||
// was unused.
|
// was unused.
|
||||||
// WARNING: If calling this function, don't call the string overloads below
|
// WARNING: If calling this function, don't call the string overloads below
|
||||||
|
Loading…
Reference in New Issue
Block a user