sessiond: field: add field roles and blob types
[lttng-tools.git] / src / bin / lttng-sessiond / field.cpp
index 66087cfae2316b977324a9952b63c1919f55e7d0..d81cf02c736ccb9f061fdacdf1dcf33cc2ebd66b 100644 (file)
@@ -70,12 +70,14 @@ lst::integer_type::integer_type(unsigned int in_alignment,
                enum lst::byte_order in_byte_order,
                unsigned int in_size,
                enum lst::integer_type::signedness in_signedness,
-               enum lst::integer_type::base in_base) :
+               enum lst::integer_type::base in_base,
+               roles in_roles) :
        type(in_alignment),
        byte_order{in_byte_order},
        size{in_size},
-       signedness{in_signedness},
-       base{in_base}
+       signedness_{in_signedness},
+       base_{in_base},
+       roles_{std::move(in_roles)}
 {
 }
 
@@ -85,8 +87,9 @@ bool lst::integer_type::_is_equal(const type &base_other) const noexcept
 
        return this->byte_order == other.byte_order &&
                this->size == other.size &&
-               this->signedness == other.signedness &&
-               this->base == other.base;
+               this->signedness_ == other.signedness_ &&
+               this->base_ == other.base_ &&
+               this->roles_ == other.roles_;
 }
 
 void lst::integer_type::accept(type_visitor& visitor) const
@@ -148,11 +151,20 @@ lst::enumeration_type::enumeration_type(unsigned int in_alignment,
                enum lst::byte_order in_byte_order,
                unsigned int in_size,
                enum signedness in_signedness,
-               enum base in_base) :
-       integer_type(in_alignment, in_byte_order, in_size, in_signedness, in_base)
+               enum base in_base,
+               lst::integer_type::roles in_roles) :
+       integer_type(in_alignment,
+                       in_byte_order,
+                       in_size,
+                       in_signedness,
+                       in_base,
+                       std::move(in_roles))
 {
 }
 
+namespace lttng {
+namespace sessiond {
+namespace trace {
 template <>
 void lst::signed_enumeration_type::accept(type_visitor& visitor) const
 {
@@ -164,6 +176,9 @@ void lst::unsigned_enumeration_type::accept(type_visitor& visitor) const
 {
        visitor.visit(*this);
 }
+} /* namespace trace */
+} /* namespace sessiond */
+} /* namespace lttng */
 
 lst::array_type::array_type(unsigned int in_alignment, type::cuptr in_element_type) :
        type(in_alignment), element_type{std::move(in_element_type)}
@@ -218,8 +233,44 @@ void lst::dynamic_length_array_type::accept(type_visitor& visitor) const
        visitor.visit(*this);
 }
 
+lst::static_length_blob_type::static_length_blob_type(
+               unsigned int in_alignment, uint64_t in_length_bytes, roles in_roles) :
+       type(in_alignment), length_bytes{in_length_bytes}, roles_{std::move(in_roles)}
+{
+}
+
+bool lst::static_length_blob_type::_is_equal(const type& base_other) const noexcept
+{
+       const auto& other = static_cast<decltype(*this)&>(base_other);
+
+       return length_bytes == other.length_bytes && roles_ == other.roles_;
+}
+
+void lst::static_length_blob_type::accept(type_visitor& visitor) const
+{
+       visitor.visit(*this);
+}
+
+lst::dynamic_length_blob_type::dynamic_length_blob_type(
+               unsigned int in_alignment, std::string in_length_field_name) :
+       type(in_alignment), length_field_name{std::move(in_length_field_name)}
+{
+}
+
+bool lst::dynamic_length_blob_type::_is_equal(const type& base_other) const noexcept
+{
+       const auto& other = dynamic_cast<decltype(*this)&>(base_other);
+
+       return length_field_name == other.length_field_name;
+}
+
+void lst::dynamic_length_blob_type::accept(type_visitor& visitor) const
+{
+       visitor.visit(*this);
+}
+
 lst::string_type::string_type(unsigned int in_alignment, enum encoding in_encoding) :
-       type(in_alignment), encoding{in_encoding}
+       type(in_alignment), encoding_{in_encoding}
 {
 }
 
@@ -227,7 +278,7 @@ bool lst::string_type::_is_equal(const type& base_other) const noexcept
 {
        const auto& other = static_cast<decltype(*this)&>(base_other);
 
-       return this->encoding == other.encoding;
+       return this->encoding_ == other.encoding_;
 }
 
 lst::static_length_string_type::static_length_string_type(
This page took 0.024105 seconds and 4 git commands to generate.