OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <Serializer.h>
Public Types | |
enum | Kind { KIND_XCDR1, KIND_XCDR2, KIND_UNALIGNED_CDR } |
enum | Alignment { ALIGN_NONE = 0, ALIGN_CDR = 8, ALIGN_XCDR2 = 4, ALIGN_MAX = ALIGN_CDR } |
enum | XcdrVersion { XCDR_VERSION_NONE, XCDR_VERSION_1, XCDR_VERSION_2 } |
Public Member Functions | |
Encoding () | |
Encoding with KIND_XCDR1 and ENDIAN_NATIVE. More... | |
Encoding (Kind kind, Endianness endianness=ENDIAN_NATIVE) | |
Encoding (Kind kind, bool swap_bytes) | |
Kind | kind () const |
void | kind (Kind value) |
Endianness | endianness () const |
void | endianness (Endianness value) |
Alignment | alignment () const |
void | alignment (Alignment value) |
size_t | max_align () const |
Return the maximum alignment dictated by the alignment policy. More... | |
void | align (size_t &value, size_t by=(std::numeric_limits< size_t >::max)()) const |
Align "value" to "by" and according to the stream's alignment. More... | |
XcdrVersion | xcdr_version () const |
void | xcdr_version (XcdrVersion value) |
String | to_string () const |
bool | zero_init_padding () const |
void | zero_init_padding (bool value) |
bool | skip_sequence_dheader () const |
void | skip_sequence_dheader (bool value) |
Static Public Member Functions | |
static String | kind_to_string (Kind value) |
Private Attributes | |
Kind | kind_ |
Endianness | endianness_ |
Alignment | alignment_ |
bool | zero_init_padding_ |
bool | skip_sequence_dheader_ |
XcdrVersion | xcdr_version_ |
bool | is_encapsulated () const |
static bool | is_encapsulated (Kind kind) |
Represents the serialization rules. Used to construct a Serializer and to pass to functions that are used without a Serializer like serialized_size() and max_serialized_size()
Definition at line 115 of file Serializer.h.
Enumerator | |
---|---|
ALIGN_NONE | No Alignment Needed. |
ALIGN_CDR | Align for CDR and XCDR1. |
ALIGN_XCDR2 | Align for XCDR2. |
ALIGN_MAX | Maximum alignment that could be used. |
Definition at line 139 of file Serializer.h.
Kinds are the overall algorithm for serialization. A Kind value along with other details like alignment and endianness comprise an Encoding.
Enumerator | |
---|---|
KIND_XCDR1 | Extensible CDR version 1 from XTypes. This represents standard non-XTypes CDR if the type is final. |
KIND_XCDR2 | Extensible CDR version 2 from XTypes. |
KIND_UNALIGNED_CDR | This is the classic encoding of OpenDDS used when there is no RTPS transport being used. It has no padding bytes and no XCDR behavior. |
Definition at line 122 of file Serializer.h.
XCDR version derived from the Encoding kind.
Enumerator | |
---|---|
XCDR_VERSION_NONE | |
XCDR_VERSION_1 | |
XCDR_VERSION_2 |
Definition at line 149 of file Serializer.h.
OpenDDS::DCPS::Encoding::Encoding | ( | ) |
Encoding with KIND_XCDR1 and ENDIAN_NATIVE.
Definition at line 77 of file Serializer.cpp.
References kind(), and KIND_XCDR1.
|
explicit |
Definition at line 84 of file Serializer.cpp.
References kind().
OpenDDS::DCPS::Encoding::Encoding | ( | Kind | kind, |
bool | swap_bytes | ||
) |
Definition at line 91 of file Serializer.cpp.
References kind().
ACE_INLINE void OpenDDS::DCPS::Encoding::align | ( | size_t & | value, |
size_t | by = (std::numeric_limits<size_t>::max)() |
||
) | const |
Align "value" to "by" and according to the stream's alignment.
Definition at line 118 of file Serializer.inl.
References ACE_INLINE, OpenDDS::DCPS::align(), and max_align().
Referenced by marshal_generator::gen_enum(), OpenDDS::DCPS::primitive_serialized_size(), OpenDDS::DCPS::primitive_serialized_size_ulong(), OpenDDS::DCPS::primitive_serialized_size_wchar(), OpenDDS::DCPS::serialized_size_list_end_parameter_id(), OpenDDS::DCPS::serialized_size_parameter_id(), and OpenDDS::DCPS::RtpsUdpDataLink::submsgs_to_msgblock().
ACE_INLINE Encoding::Alignment OpenDDS::DCPS::Encoding::alignment | ( | ) | const |
Definition at line 76 of file Serializer.inl.
References ACE_INLINE, and alignment_.
Referenced by OpenDDS::DCPS::Serializer::align_r(), OpenDDS::DCPS::Serializer::align_w(), OpenDDS::DCPS::Serializer::alignment(), OpenDDS::DCPS::Serializer::doread(), OpenDDS::DCPS::Serializer::dowrite(), and kind().
ACE_INLINE void OpenDDS::DCPS::Encoding::alignment | ( | Alignment | value | ) |
ACE_INLINE Endianness OpenDDS::DCPS::Encoding::endianness | ( | ) | const |
Definition at line 64 of file Serializer.inl.
References ACE_INLINE, and endianness_.
Referenced by OpenDDS::DCPS::Serializer::encoding(), OpenDDS::DCPS::Serializer::endianness(), OpenDDS::DCPS::EncapsulationHeader::from_encoding(), OpenDDS::DCPS::DataSampleHeader::partial(), OpenDDS::DCPS::Serializer::swap_bytes(), and OpenDDS::DCPS::EncapsulationHeader::to_encoding_i().
ACE_INLINE void OpenDDS::DCPS::Encoding::endianness | ( | Endianness | value | ) |
|
static |
Returns true if the encoding kind is excepted to have a header for RTPS serialized data payloads.
Definition at line 139 of file Serializer.inl.
References ACE_ERROR, ACE_INLINE, ACE_TEXT(), KIND_UNALIGNED_CDR, KIND_XCDR1, KIND_XCDR2, and LM_ERROR.
Referenced by OpenDDS::DCPS::FilterEvaluator::SerializedForEval::lookup().
ACE_INLINE bool OpenDDS::DCPS::Encoding::is_encapsulated | ( | ) | const |
Returns true if the encoding kind is excepted to have a header for RTPS serialized data payloads.
Definition at line 155 of file Serializer.inl.
References ACE_INLINE, and kind_.
ACE_INLINE Encoding::Kind OpenDDS::DCPS::Encoding::kind | ( | void | ) | const |
Definition at line 29 of file Serializer.inl.
References ACE_INLINE, and kind_.
Referenced by OpenDDS::XTypes::DynamicDataXcdrReadImpl::check_xcdr1_mutable_i(), OpenDDS::DCPS::RecorderImpl::data_received(), OpenDDS::DCPS::DataReaderImpl_T< DynamicSample >::dds_demarshal(), Encoding(), OpenDDS::DCPS::EncapsulationHeader::from_encoding(), OpenDDS::RTPS::Spdp::SpdpTransport::handle_input(), OpenDDS::DCPS::DataReaderImpl_T< DynamicSample >::lookup_instance(), OpenDDS::DCPS::DataWriterImpl::setup_serialization(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_all(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_collection_member(), OpenDDS::XTypes::DynamicDataXcdrReadImpl::skip_struct_member_at_index(), and OpenDDS::DCPS::EncapsulationHeader::to_encoding_i().
ACE_INLINE void OpenDDS::DCPS::Encoding::kind | ( | Kind | value | ) |
Definition at line 35 of file Serializer.inl.
References ACE_ERROR, ACE_INLINE, ACE_TEXT(), ALIGN_CDR, ALIGN_NONE, ALIGN_XCDR2, alignment(), kind_, KIND_UNALIGNED_CDR, KIND_XCDR1, KIND_XCDR2, LM_ERROR, value, xcdr_version(), XCDR_VERSION_1, XCDR_VERSION_2, XCDR_VERSION_NONE, and zero_init_padding().
Definition at line 326 of file Serializer.cpp.
References OpenDDS::DCPS::to_dds_string().
Referenced by OpenDDS::DCPS::DataReaderImpl_T< DynamicSample >::dds_demarshal(), OpenDDS::DCPS::EncapsulationHeader::from_encoding(), OpenDDS::DCPS::DataReaderImpl_T< DynamicSample >::lookup_instance(), OpenDDS::DCPS::DataReaderImpl::setup_deserialization(), OpenDDS::DCPS::DataWriterImpl::setup_serialization(), and to_string().
ACE_INLINE size_t OpenDDS::DCPS::Encoding::max_align | ( | ) | const |
Return the maximum alignment dictated by the alignment policy.
Definition at line 112 of file Serializer.inl.
References ACE_INLINE, and alignment_.
Referenced by align(), OpenDDS::DCPS::Serializer::align_cont_r(), OpenDDS::DCPS::Serializer::align_cont_w(), OpenDDS::DCPS::Serializer::align_r(), OpenDDS::DCPS::Serializer::align_w(), OpenDDS::DCPS::Serializer::reset_alignment(), and OpenDDS::DCPS::Serializer::skip().
ACE_INLINE bool OpenDDS::DCPS::Encoding::skip_sequence_dheader | ( | ) | const |
Should the XCDR2 sequence DHEADER be skipped? This is not spec compliant – used for compatibility with earlier OpenDDS versions that had a bug. Only used for XTypes::TypeObject and related structs.
Definition at line 100 of file Serializer.inl.
References ACE_INLINE, and skip_sequence_dheader_.
Referenced by OpenDDS::DCPS::TypeSupportImpl::add_types(), OpenDDS::DCPS::serialized_size(), OpenDDS::DCPS::TypeSupportImpl::to_type_info_i(), and typeobject_generator::use_old_typeobject_encoding().
ACE_INLINE void OpenDDS::DCPS::Encoding::skip_sequence_dheader | ( | bool | value | ) |
Should the XCDR2 sequence DHEADER be skipped? This is not spec compliant – used for compatibility with earlier OpenDDS versions that had a bug. Only used for XTypes::TypeObject and related structs.
Definition at line 106 of file Serializer.inl.
References ACE_INLINE, skip_sequence_dheader_, and value.
String OpenDDS::DCPS::Encoding::to_string | ( | void | ) | const |
Definition at line 340 of file Serializer.cpp.
References OpenDDS::DCPS::Serializer::ALIGN_PAD, OpenDDS::DCPS::endianness_to_string(), OpenDDS::DCPS::EncapsulationHeader::kind_, and kind_to_string().
ACE_INLINE Encoding::XcdrVersion OpenDDS::DCPS::Encoding::xcdr_version | ( | ) | const |
Definition at line 127 of file Serializer.inl.
References ACE_INLINE, and xcdr_version_.
Referenced by OpenDDS::XTypes::DynamicDataXcdrReadImpl::DynamicDataXcdrReadImpl(), kind(), OpenDDS::DCPS::Serializer::read_delimiter(), OpenDDS::DCPS::Serializer::read_parameter_id(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_array_as_uints_i(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_bitmask_sequence_as_uints_i(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_complex_array(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_complex_sequence(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_array_as_ints_i(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_enum_sequence_as_ints_i(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_generic_string_array(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_generic_string_sequence(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nested_bitmask_sequences(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nested_enum_sequences(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_basic_array_i(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_basic_sequence_i(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_bitmask_array(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_bitmask_sequence(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_enum_array(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_nesting_enum_sequence(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_sequence_member_default_value(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_structure(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialize_union(), OpenDDS::DCPS::serialized_size_delimiter(), OpenDDS::DCPS::serialized_size_list_end_parameter_id(), OpenDDS::DCPS::serialized_size_parameter_id(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_structure(), OpenDDS::XTypes::DynamicDataImpl::DataContainer::serialized_size_union(), OpenDDS::DCPS::Serializer::skip_delimiter(), OpenDDS::DCPS::Serializer::write_delimiter(), OpenDDS::DCPS::Serializer::write_list_end_parameter_id(), and OpenDDS::DCPS::Serializer::write_parameter_id().
ACE_INLINE void OpenDDS::DCPS::Encoding::xcdr_version | ( | XcdrVersion | value | ) |
ACE_INLINE bool OpenDDS::DCPS::Encoding::zero_init_padding | ( | ) | const |
Should the padding bytes being inserted into the stream be zero initialized?
Definition at line 88 of file Serializer.inl.
References ACE_INLINE, and zero_init_padding_.
Referenced by OpenDDS::DCPS::Serializer::align_w(), and kind().
ACE_INLINE void OpenDDS::DCPS::Encoding::zero_init_padding | ( | bool | value | ) |
Should the padding bytes being inserted into the stream be zero initialized?
Definition at line 94 of file Serializer.inl.
References ACE_INLINE, value, and zero_init_padding_.
|
private |
Definition at line 215 of file Serializer.h.
Referenced by alignment(), and max_align().
|
private |
Definition at line 214 of file Serializer.h.
Referenced by endianness().
|
private |
Definition at line 213 of file Serializer.h.
Referenced by is_encapsulated(), OpenDDS::DCPS::EncapsulationHeader::is_good(), kind(), and OpenDDS::DCPS::EncapsulationHeader::kind().
|
private |
Definition at line 217 of file Serializer.h.
Referenced by skip_sequence_dheader().
|
private |
Definition at line 218 of file Serializer.h.
Referenced by xcdr_version().
|
private |
Definition at line 216 of file Serializer.h.
Referenced by zero_init_padding().