Class MessageWriter

Inheritance Relationships

Derived Types

Class Documentation

class MessageWriter

Abstract interface for consuming deserialized schema values. Implement this to produce different output formats (FlatMessage, JSON, msgpack, etc.) from the same schema walk.

Subclassed by RosMsgParser::FlatMessageWriter, RosMsgParser::MsgpackMessageWriter

Public Functions

virtual ~MessageWriter() = default
virtual void writeValue(const FieldLeaf &leaf, const Variant &value) = 0

Called for each scalar/builtin value (not string, not enum)

virtual void writeString(const FieldLeaf &leaf, const std::string &value) = 0

Called for each string value.

virtual void writeEnum(const FieldLeaf &leaf, int32_t int_value, const std::string &enum_name) = 0

Called for each enum value.

inline virtual void writeBlob(const FieldLeaf&, Span<const uint8_t>)

Called for blob data (large byte arrays exceeding max_array_size)

inline virtual void beginStruct(const ROSField&)

Structural events for writers that need hierarchy (e.g., JSON)

inline virtual void endStruct()
inline virtual void finish()

Called when the schema walk finishes. Writers can use this to finalize output.