![]() |
MySQL 9.1.0
Source Code Documentation
|
Basic serializer that is implementing Serializer interface. More...
#include <serializer_default.h>
Public Types | |
using | Base_type = Serializer< Serializer_default< Archive_concrete_type >, Archive_concrete_type > |
![]() | |
using | Serializer_current_type = Serializer< Serializer_default< Archive_concrete_type >, Archive_concrete_type > |
Public Member Functions | |
template<class Field_type , Field_size field_size_defined> | |
void | encode (Level_type level, Field_id_type field_id, const Field_definition< Field_type, field_size_defined > &field_definition) |
Function used to encode one field. More... | |
template<class Field_type , Field_size field_size_defined> | |
void | decode (Level_type level, Field_id_type field_id, std::size_t serializable_end_pos, Field_definition< Field_type, field_size_defined > &field_definition) |
Function used to decode one field. More... | |
template<class Serializable_type > | |
void | encode_serializable_metadata (Level_type level, Field_id_type field_id, const Serializable_type &serializable, bool skip_id) |
This function saves serializable metadata. More... | |
template<class Serializable_type > | |
std::size_t | decode_serializable_metadata (Level_type level, Field_id_type field_id, Serializable_type &serializable, bool skip_id) |
This function loads serializable metadata. More... | |
virtual | ~Serializer_default ()=default |
Destructor. More... | |
![]() | |
bool | is_error () const |
bool | is_good () const |
const Serialization_error & | get_error () |
Serializer_current_type & | operator<< (const T &arg) |
Function for the API user to serialize data. More... | |
Serializer< Serializer_default< Archive_concrete_type >, Archive_concrete_type > & | operator<< (const T &arg) |
Serializer_current_type & | operator>> (T &arg) |
Function for the API user to serialize data. More... | |
Serializer< Serializer_default< Archive_concrete_type >, Archive_concrete_type > & | operator>> (T &arg) |
Archive_concrete_type & | get_archive () |
Function for the API user to access reference of the archive. More... | |
Static Public Member Functions | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_bounded_size_type<Field_type>() == true>> | |
static constexpr std::size_t | get_max_size () |
Function returns maximum size of the field written to an archive, based on its type. More... | |
template<class Serializable_concrete_type > | |
static constexpr std::size_t | get_max_size () |
Function returns maximum size of the field written to an archive, based on its type. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_simple_type<Field_type>() == true>> | |
static std::size_t | get_field_size (const Field_type &field) |
Function used internally to calculate size of fields, version for basic types. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_enum_type<Field_type>() == true>> | |
static std::size_t | get_field_size (const Field_type &field, Serializer_enum_tag={}) |
Function used internally to calculate size of fields, version for enumeration types. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_vector_list_type<Field_type>() == true>> | |
static std::size_t | get_field_size (const Field_type &field, Serializer_vector_list_tag={}) |
Function used internally to calculate size of fields, version for vector. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_serializable_type<Field_type>() == true>> | |
static std::size_t | get_field_size (const Field_type &field, Serializer_serializable_tag={}) |
Function used internally to calculate size of fields, version for serializable. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_map_type<Field_type>() == true>> | |
static std::size_t | get_field_size (const Field_type &field, Serializer_map_tag={}) |
Function used internally to calculate size of fields, version for std::map. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_set_type<Field_type>() == true>> | |
static std::size_t | get_field_size (const Field_type &field, Serializer_set_tag={}) |
Function used internally to calculate size of fields, version for std::set. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_array_type_v<Field_type>() == true>> | |
static std::size_t | get_field_size (const Field_type &field, Serializer_array_tag={}) |
Function used internally to calculate size of fields, version for std::array. More... | |
template<class Field_type , Field_size field_size_defined> | |
static std::size_t | get_size_field_def (Field_id_type field_id, const Field_definition< Field_type, field_size_defined > &field_definition) |
Function returns size of serialized field_definition object. More... | |
template<class Serializable_concrete_type > | |
static std::size_t | get_size_serializable (Field_id_type field_id, const Serializable_concrete_type &serializable, bool skip_id=false) |
Function returns size of serialized field_definition object. More... | |
![]() | |
static std::size_t | get_size (const T &arg) |
Public Attributes | |
friend | Base_type |
friend | Archive_concrete_type |
Protected Member Functions | |
template<class Field_type , Field_size field_size_defined> | |
bool | decode_field_id (Level_type level, Field_id_type field_id, Field_definition< Field_type, field_size_defined > &field_definition) |
Function used internally to decode field_id and handle optional fields. More... | |
template<class Field_type , Field_size field_size_defined> | |
bool | encode_field_id (Level_type level, Field_id_type field_id, const Field_definition< Field_type, field_size_defined > &field_definition) |
Function used internally to encode field_id and handle optional fields. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_simple_type<Field_type>() == true>> | |
void | encode_field (const Field_type &field) |
Function used internally to encode field_id and handle optional fields, version for basic types. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_simple_type<Field_type>() == true>> | |
void | decode_field (Field_type &field) |
Function used internally to decode field_id and handle optional fields, version for basic types. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_enum_type<Field_type>() == true>> | |
void | encode_field (const Field_type &field, Serializer_enum_tag={}) |
Function used internally to encode field_id and handle optional fields, version for enumeration types. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_enum_type<Field_type>() == true>> | |
void | decode_field (Field_type &field, Serializer_enum_tag={}) |
Function used internally to decode field_id and handle optional fields, version for enumeration types. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_vector_list_type<Field_type>() == true>> | |
void | encode_field (const Field_type &field, Serializer_vector_list_tag={}) |
Function used internally to encode field_id and handle optional fields, version for vector. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_vector_list_type<Field_type>() == true>> | |
void | decode_field (Field_type &field, Serializer_vector_list_tag={}) |
Function used internally to decode field_id and handle optional fields, version for vector. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_serializable_type<Field_type>() == true>> | |
void | encode_field (const Field_type &field, Serializer_serializable_tag={}) |
Function used internally to encode field_id and handle optional fields, version for serializable. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_serializable_type<Field_type>() == true>> | |
void | decode_field (Field_type &field, Serializer_serializable_tag={}) |
Function used internally to decode field_id and handle optional fields, version for serializable. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_map_type<Field_type>() == true>> | |
void | encode_field (const Field_type &field, Serializer_map_tag={}) |
Function used internally to encode field_id and handle optional fields, version for std::map. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_map_type<Field_type>() == true>> | |
void | decode_field (Field_type &field, Serializer_map_tag={}) |
Function used internally to decode field_id and handle optional fields, version for std::map. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_set_type<Field_type>() == true>> | |
void | encode_field (const Field_type &field, Serializer_set_tag={}) |
Function used internally to encode field_id and handle optional fields, version for std::set. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_set_type<Field_type>() == true>> | |
void | decode_field (Field_type &field, Serializer_set_tag={}) |
Function used internally to decode field_id and handle optional fields, version for std::set. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_array_type_v<Field_type>() == true>> | |
void | encode_field (const Field_type &field, Serializer_array_tag={}) |
Function used internally to encode field_id and handle optional fields, version for std::array. More... | |
template<class Field_type , Field_size field_size_defined, typename = std::enable_if_t<is_array_type_v<Field_type>() == true>> | |
void | decode_field (Field_type &field, Serializer_array_tag={}) |
Function used internally to decode field_id and handle optional fields, version for std::array. More... | |
![]() | |
Serializer_default< Archive_concrete_type > * | get_derived () |
Casts this to derived type. More... | |
void | encode_field (Level_type level, Field_id_type field_id, const Field_definition< Field_type, field_size_defined > &field_definition) |
Function used to encode one field. More... | |
void | decode_field (Level_type level, Field_id_type field_id, std::size_t serializable_end_pos, Field_definition< Field_type, field_size_defined > &field_definition) |
Function used to decode one field. More... | |
void | encode_serializable (Level_type level, Field_id_type field_id, const Serializable_type &serializable, bool skip_id) |
Function used to encode serializable field, this function saves serializable metadata and calls serializable encode method. More... | |
void | encode_serializable_fields (const Serializable_type &serializable, Level_type level) |
Function used to encode fields of specializations of Serializable class, iterates over constant fields allowing them to be saved into an archive. More... | |
void | decode_serializable (Level_type level, Field_id_type field_id, std::size_t serializable_end_pos, Serializable_type &serializable, bool skip_id) |
Function used to decode serializable field, this function loads serializable metadata and calls serializable decode method. More... | |
void | decode_serializable_fields (Serializable_type &serializable, Level_type level, std::size_t serializable_end_pos) |
Function used to decode fields of specializations of Serializable class, iterates over non constant fields, allowing them to be filled with data from an archive. More... | |
void | clear_error () |
virtual | ~Serializer ()=default |
Destructor. More... | |
Additional Inherited Members | |
![]() | |
static std::size_t | get_size_field_def (Field_id_type field_id, const Field_definition< Field_type, field_size_defined > &field_definition) |
Function returns size of field object written to an archive. More... | |
static std::size_t | get_size_serializable (Field_id_type field_id, const Serializable_concrete_type &serializable, bool skip_id=false) |
Function returns size of serializable object written to an archive. More... | |
static constexpr std::size_t | get_max_size () |
Function returns maximum size of the field written to an archive, based on its type. More... | |
static constexpr std::size_t | get_max_size () |
Function returns maximum size of the Serializable_concrete_type class object data written to an archive, based on its type. More... | |
![]() | |
Level_type | m_level |
Level of the serializable tree. More... | |
Archive_concrete_type | m_archive |
Archive that stores the data. More... | |
Serialization_error | m_error |
Holds information about error. More... | |
Basic serializer that is implementing Serializer interface.
Serializes fields and appropriate metadata to ensure that messages are backward and forward compatible
Archive_concrete_type | Type of the archive |
using mysql::serialization::Serializer_default< Archive_concrete_type >::Base_type = Serializer<Serializer_default<Archive_concrete_type>, Archive_concrete_type> |
|
virtualdefault |
Destructor.
void mysql::serialization::Serializer_default< Archive_concrete_type >::decode | ( | Level_type | level, |
Field_id_type | field_id, | ||
std::size_t | serializable_end_pos, | ||
Field_definition< Field_type, field_size_defined > & | field_definition | ||
) |
Function used to decode one field.
Field_type | Type of field |
field_size_defined | Defined field size in archive |
[in] | level | Level of the serializable tree, may be ignored, used mainly for text formatting |
[in] | field_id | Expected field id |
[in] | serializable_end_pos | End position of current serializable type |
[in] | field_definition | Definition of the field |
|
protected |
Function used internally to decode field_id and handle optional fields, version for basic types.
Field_type | Type of field |
[in] | field | Field that will be loaded |
|
protected |
Function used internally to decode field_id and handle optional fields, version for std::array.
Field_type | Type of field |
[in] | field | Field that will be loaded |
|
protected |
Function used internally to decode field_id and handle optional fields, version for enumeration types.
Field_type | Type of field |
[in] | field | Field that will be loaded |
|
protected |
Function used internally to decode field_id and handle optional fields, version for std::map.
Field_type | Type of field |
[in] | field | Field that will be loaded |
|
protected |
Function used internally to decode field_id and handle optional fields, version for serializable.
Field_type | Type of field |
[in] | field | Field that will be loaded |
|
protected |
Function used internally to decode field_id and handle optional fields, version for std::set.
Field_type | Type of field |
[in] | field | Field that will be loaded |
|
protected |
Function used internally to decode field_id and handle optional fields, version for vector.
Field_type | Type of field |
[in] | field | Field that will be loaded |
|
protected |
Function used internally to decode field_id and handle optional fields.
Field_type | Type of field |
field_size_defined | Defined field size in archive |
[in] | level | Level of the serializable tree, may be ignored, used mainly for text formatting |
[in] | field_id | Field id |
[in] | field_definition | Definition of the field |
std::size_t mysql::serialization::Serializer_default< Archive_concrete_type >::decode_serializable_metadata | ( | Level_type | level, |
Field_id_type | field_id, | ||
Serializable_type & | serializable, | ||
bool | skip_id | ||
) |
This function loads serializable metadata.
Serializable_type | serializable data type |
[in] | level | Level of the serializable tree, may be ignored, used mainly for text formatting |
[in] | field_id | Field id |
[in] | serializable | Serializable object universal reference |
[in] | skip_id | Skip encoding of serializable id (for repeated fields) |
void mysql::serialization::Serializer_default< Archive_concrete_type >::encode | ( | Level_type | level, |
Field_id_type | field_id, | ||
const Field_definition< Field_type, field_size_defined > & | field_definition | ||
) |
Function used to encode one field.
Field_type | Type of field |
field_size_defined | Defined field size in archive |
[in] | level | Level of the serializable tree, may be ignored, used mainly for text formatting |
[in] | field_id | Field id |
[in] | field_definition | Definition of the field |
|
protected |
Function used internally to encode field_id and handle optional fields, version for basic types.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
protected |
Function used internally to encode field_id and handle optional fields, version for std::array.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
protected |
Function used internally to encode field_id and handle optional fields, version for enumeration types.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
protected |
Function used internally to encode field_id and handle optional fields, version for std::map.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
protected |
Function used internally to encode field_id and handle optional fields, version for serializable.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
protected |
Function used internally to encode field_id and handle optional fields, version for std::set.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
protected |
Function used internally to encode field_id and handle optional fields, version for vector.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
protected |
Function used internally to encode field_id and handle optional fields.
Field_type | Type of field |
field_size_defined | Defined field size in archive |
[in] | level | Level of the serializable tree, may be ignored, used mainly for text formatting |
[in] | field_id | Field id |
[in] | field_definition | Definition of the field |
void mysql::serialization::Serializer_default< Archive_concrete_type >::encode_serializable_metadata | ( | Level_type | level, |
Field_id_type | field_id, | ||
const Serializable_type & | serializable, | ||
bool | skip_id | ||
) |
This function saves serializable metadata.
Serializable_type | serializable data type |
[in] | level | Level of the serializable tree, may be ignored, used mainly for text formatting |
[in] | field_id | Field id |
[in] | serializable | Serializable object universal reference |
[in] | skip_id | Skip encoding of serializable id (for repeated fields) |
|
static |
Function used internally to calculate size of fields, version for basic types.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
static |
Function used internally to calculate size of fields, version for std::array.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
static |
Function used internally to calculate size of fields, version for enumeration types.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
static |
Function used internally to calculate size of fields, version for std::map.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
static |
Function used internally to calculate size of fields, version for serializable.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
static |
Function used internally to calculate size of fields, version for std::set.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
static |
Function used internally to calculate size of fields, version for vector.
Field_type | Type of field |
[in] | field | Field that will be saved |
|
inlinestaticconstexpr |
Function returns maximum size of the field written to an archive, based on its type.
Field_type | Type of field |
field_size_defined | Defined field size in archive |
|
inlinestaticconstexpr |
Function returns maximum size of the field written to an archive, based on its type.
Field_type | Type of field |
field_size_defined | Defined field size in archive |
|
static |
Function returns size of serialized field_definition object.
Field_type | Type of field |
field_size_defined | Defined field size in archive |
[in] | field_id | Field id |
[in] | field_definition | Definition of the field |
|
static |
Function returns size of serialized field_definition object.
Serializable_concrete_type | Type of serializable obj |
[in] | field_id | Field id |
[in] | serializable | Serializable universal reference for which size will be calculated |
[in] | skip_id | Skip serializable id (for repeated fields) |
friend mysql::serialization::Serializer_default< Archive_concrete_type >::Archive_concrete_type |
friend mysql::serialization::Serializer_default< Archive_concrete_type >::Base_type |