diff --git a/slides/cppcon23/components/Agenda.vue b/slides/cppcon23/components/Agenda.vue index fb63afe..326c14c 100644 --- a/slides/cppcon23/components/Agenda.vue +++ b/slides/cppcon23/components/Agenda.vue @@ -1,11 +1,11 @@ diff --git a/slides/cppcon23/pages/03_tooling.md b/slides/cppcon23/pages/03_tooling.md index b646005..5317708 100644 --- a/slides/cppcon23/pages/03_tooling.md +++ b/slides/cppcon23/pages/03_tooling.md @@ -240,6 +240,22 @@ struct serializer { }; ``` + + --- section: Data Serialization slide: Specializing Standard Types @@ -290,9 +306,19 @@ enum class internal_type : std::uint8_t { + + --- section: Data Serialization -slide: Specializing User-Defined Types - Interface +slide: Specializing User-Defined Types --- ```cpp @@ -307,30 +333,19 @@ struct serializer { }; ``` ---- -section: Data Serialization -slide: Serializing User-Defined Types - Implementation ---- - -```cpp {1-3,14-17|5-10} {lines:true} -class object final { - public: - explicit object(std::string arg_name) : name(std::move(arg_name)), _v() {} - - template - object& add(std::string&& key, T&& value) { - using type = typename std::remove_cv::type>::type; - _v.emplace(std::move(key), serializer().serialize(std::forward(value))); - return *this; - } + --- section: Data Serialization @@ -347,6 +362,17 @@ slide: Deeper Dive + + --- section: Data Submission slide: Low-Level API @@ -378,7 +404,7 @@ Post::Status ClientImpl::post() const { ``` -
+
```cpp int main() { @@ -402,6 +428,32 @@ int main() {
+ + --- section: Data Submission slide: FlatBuffers Schema @@ -452,55 +504,23 @@ root_type Messages; ---- -section: Data Submission -slide: Serializing Test Cases ---- - -```cpp {|4-7} -std::vector Testcase::serialize(const std::vector& testcases) { - flatbuffers::FlatBufferBuilder builder; - std::vector> messageBuffers; - for (const auto& tc : testcases) { - const auto& out = tc.flatbuffers(); - messageBuffers.push_back(fbs::CreateMessageBufferDirect(builder, &out)); - } - const auto& messages = fbs::CreateMessagesDirect(builder, &messageBuffers); - builder.Finish(messages); - const auto& ptr = builder.GetBufferPointer(); - return {ptr, ptr + builder.GetSize()}; -} -``` - ---- -section: Data Submission -slide: Serializing Data Points ---- - -
- -```cpp {|6} -std::vector Testcase::flatbuffers() const { - /** ... */ - std::vector> fbsResultEntries; - for (const auto& result : _resultsMap) { - const auto& key = result.first.c_str(); - const auto& value = result.second.val.serialize(builder); - fbsResultEntries.push_back(fbs::CreateResultDirect(builder, key, value)); - } - /** ... */ -} -``` - -```cpp {|3} -flatbuffers::Offset data_point::serialize( - flatbuffers::FlatBufferBuilder& builder) const { - return touca::detail::visit(data_point_serializer_visitor(builder), _value); - } -) -``` - -
+ --- slide: Data ingestion w/ async processing @@ -517,6 +537,27 @@ slide: Data ingestion w/ async processing + + --- slide: Data ingestion w/ on-demand processing --- @@ -532,6 +573,16 @@ slide: Data ingestion w/ on-demand processing + + --- slide: Data Retention --- @@ -556,3 +607,16 @@ slide: Data Retention + + diff --git a/slides/cppcon23/pages/07_appendix.md b/slides/cppcon23/pages/07_appendix.md new file mode 100644 index 0000000..c85f44c --- /dev/null +++ b/slides/cppcon23/pages/07_appendix.md @@ -0,0 +1,80 @@ +--- +layout: center +--- + +Appendix + +--- +section: Data Serialization +slide: Serializing User-Defined Types - Implementation +--- + +```cpp {1-3,14-17|5-10} {lines:true} +class object final { + public: + explicit object(std::string arg_name) : name(std::move(arg_name)), _v() {} + + template + object& add(std::string&& key, T&& value) { + using type = typename std::remove_cv::type>::type; + _v.emplace(std::move(key), serializer().serialize(std::forward(value))); + return *this; + } + + /** ... */ + + private: + std::string name; + std::map _v; +} +``` + +--- +section: Data Submission +slide: Serializing Test Cases +--- + +```cpp {|4-7} +std::vector Testcase::serialize(const std::vector& testcases) { + flatbuffers::FlatBufferBuilder builder; + std::vector> messageBuffers; + for (const auto& tc : testcases) { + const auto& out = tc.flatbuffers(); + messageBuffers.push_back(fbs::CreateMessageBufferDirect(builder, &out)); + } + const auto& messages = fbs::CreateMessagesDirect(builder, &messageBuffers); + builder.Finish(messages); + const auto& ptr = builder.GetBufferPointer(); + return {ptr, ptr + builder.GetSize()}; +} +``` + +--- +section: Data Submission +slide: Serializing Data Points +--- + +
+ +```cpp {|6} +std::vector Testcase::flatbuffers() const { + /** ... */ + std::vector> fbsResultEntries; + for (const auto& result : _resultsMap) { + const auto& key = result.first.c_str(); + const auto& value = result.second.val.serialize(builder); + fbsResultEntries.push_back(fbs::CreateResultDirect(builder, key, value)); + } + /** ... */ +} +``` + +```cpp {|3} +flatbuffers::Offset data_point::serialize( + flatbuffers::FlatBufferBuilder& builder) const { + return touca::detail::visit(data_point_serializer_visitor(builder), _value); + } +) +``` + +
diff --git a/slides/cppcon23/slides.md b/slides/cppcon23/slides.md index d8837b4..60d652e 100644 --- a/slides/cppcon23/slides.md +++ b/slides/cppcon23/slides.md @@ -89,3 +89,8 @@ layout: center + +--- +src: ./pages/07_appendix.md +sectionDefault: '' +---