3 #include "data_tamer_parser/data_tamer_parser.hpp"
11 MsgParserImpl(
const std::string& topic_name,
const std::string& type_name,
15 schema_ = DataTamerParser::BuilSchemaFromText(schema);
20 auto callback = [
this,
timestamp](
const std::string& series_name,
21 const DataTamerParser::VarNumber& var) {
22 auto name =
fmt::format(
"{}/{}", topic_name_, series_name);
23 auto& plot_data = _plot_data.getOrCreateNumeric(name);
25 double value = std::visit([](
auto&& v) {
return static_cast<double>(v); }, var);
30 DataTamerParser::SnapshotView snapshot;
31 snapshot.schema_hash = schema_.hash;
33 DataTamerParser::BufferSpan msg_buffer = { serialized_msg.
data(),
34 serialized_msg.
size() };
36 const uint32_t mask_size = DataTamerParser::Deserialize<uint32_t>(msg_buffer);
37 snapshot.active_mask.data = msg_buffer.data;
38 snapshot.active_mask.size = mask_size;
39 msg_buffer.trimFront(mask_size);
41 const uint32_t payload_size = DataTamerParser::Deserialize<uint32_t>(msg_buffer);
42 snapshot.payload.data = msg_buffer.data;
43 snapshot.payload.size = payload_size;
45 DataTamerParser::ParseSnapshot(schema_, snapshot, callback);
55 DataTamerParser::BasicType
type;
64 const std::string& type_name,
65 const std::string& schema,
68 return std::make_shared<MsgParserImpl>(topic_name, type_name, schema,
data);