Support static flatbuffers in ErrorCounter
Change-Id: Id66ec368bcf14d485f16335f7c133ba388e2ebf8
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/aos/util/error_counter.h b/aos/util/error_counter.h
index 3e69a71..1e04571 100644
--- a/aos/util/error_counter.h
+++ b/aos/util/error_counter.h
@@ -41,6 +41,16 @@
return offset;
}
+ template <typename Static>
+ static void InitializeStaticFbs(Static *builder) {
+ CHECK(builder->reserve(kNumErrors));
+ for (size_t ii = 0; ii < kNumErrors; ++ii) {
+ auto element = CHECK_NOTNULL(builder->emplace_back());
+ element->set_error(static_cast<Error>(ii));
+ element->set_count(0);
+ }
+ }
+
void set_mutable_vector(
flatbuffers::Vector<flatbuffers::Offset<Count>> *vector) {
vector_ = vector;
@@ -91,6 +101,14 @@
return offset;
}
+ template <typename Static>
+ void PopulateCountsStaticFbs(Static *builder) const {
+ ErrorCounter<Error, Count>::InitializeStaticFbs(builder);
+ for (size_t ii = 0; ii < kNumErrors; ++ii) {
+ builder->at(ii).set_count(error_counts_.at(ii));
+ }
+ }
+
void IncrementError(Error error) {
DCHECK_LT(static_cast<size_t>(error), error_counts_.size());
error_counts_.at(static_cast<size_t>(error))++;