Figure 7.6: Serialization of Structs with Length Fields (Example)
41980e63748c84b0510cfa1df93c0e629261728e31fa078ab9a357595064bb3a
1. Diagrammtyp & Architektur-Kontext
Struktur- und Serialisierungsdiagramm (Wire-Format-Speicherabbild) im Kontext des AUTOSAR Adaptive Platform Communication Management (ara::com / SOME/IP- bzw. IPC-Serialisierung). Das Diagramm visualisiert die lineare Abbildung hierarchisch geschachtelter C++-Datenstrukturen (struct) in einen Byte-Stream unter Verwendung expliziter Längenfelder (Length Fields).
2. Komponenten, Entitäten & Schnittstellen
Auf Quelldatenseite definiert das Diagramm die Datentypen:
Struct_1: Enthält die Memberuint32 a, das statische Arrayfloat32 b[2]und die UnterstrukturStruct_2 c.Struct_2: Enthält die Memberuint32 d, das statische Arrayfloat32 e[2]und die UnterstrukturStruct_3 f.Struct_3: Geschachtelte Folgestruktur (weiterer Inhalt abkürzend durch Fortsetzungspunkte dargestellt).
Auf Zielseite (Byte-Stream nach serialization) liegen sequentiell vor:
- Konfigurierte Längenfelder (grau hinterlegt):
std::uint16_t lf1(fürStruct_1),std::uint16_t lf2(fürStruct_2) undstd::uint16_t lf3(fürStruct_3). - Serialisierte primitive Werte und Einzelelemente:
std::uint32_t a,std::float32_t b_1,std::float32_t b_2,std::uint32_t d,std::float32_t e_1,std::float32_t e_2.
3. Dynamisches Verhalten & Sequenzablauf
Die Serialisierung erfolgt rekursiv in Pre-Order-Reihenfolge bezüglich der Strukturcontainer:
- Einstieg in
Struct_1: Voranstellen des Längenfeldeslf1(std::uint16_t) in den Puffer. - Lineare Serialisierung der primitiven Attribute von
Struct_1:a(std::uint32_t), gefolgt von den sequentiellen Array-Elementenb_1undb_2(std::float32_t). - Rekursiver Abstieg in Member
c(Struct_2): Einfügen des Längenfeldeslf2(std::uint16_t). - Lineare Serialisierung der primitiven Attribute von
Struct_2:d(std::uint32_t), gefolgt von den Array-Elementene_1unde_2(std::float32_t). - Rekursiver Abstieg in Member
f(Struct_3): Einfügen des Längenfeldeslf3(std::uint16_t), gefolgt von den Nutzdaten der dritten Struktur.
4. Normative Relevanz & Entwickler-Hinweise
Das Diagramm illustriert das Verhalten des Serialisierers bei aktivierter Längenfeld-Konfiguration (lengthFieldSize = 2 bzw. 16-Bit) in den ARXML-Transformationsbeschreibungen (z. B. SOME/IP Transformation Props):
- Längenfelder quantifizieren die Byte-Länge der unmittelbar nachfolgenden serialisierten Struktur inklusive aller darin verschachtelten Unterstrukturen und deren Längenfelder. Das Längenfeld selbst ist nicht Teil des angegebenen Längenwerts.
- Statische Arrays fester Größe (
b[2],e[2]) werden ohne Array-Längenfeld direkt inline expandiert, sofern nicht explizit als dynamische Sequenz mit eigenem Längenfeld modelliert. - Das Voranstellen von Längenfeldern ermöglicht Deserialisierern das gezielte Überspringen (Forward-Skipping) unbekannter oder erweiterter Strukturen zur Gewährleistung von Vorwärts- und Rückwärtskompatibilität.
- Bei der Implementierung ist auf Endianness (Netzwerk-Byte-Order) und etwaige systemspezifische Alignment-/Padding-Regeln zu achten.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.