DEENESPTFRRUARHIKOZHNL
AUTOSAR_EXP_ARAComAPI FIG-3618104038a53824 962 × 223 px 1 Release(s)

Figure 6.23: Event Allocate/Send sample

SHA-256 Inhalts-Fingerabdruck: 3618104038a53824bd0aad1e4f58b8a3a0c095d8f1bafae4e62f1d4ee0944930
✦ KI-generierte Bildanalyse & technische Beschreibung Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08

1. Diagrammtyp & Architektur-Kontext

  • Klassifikation: C++11/C++14 Code-Listing / API-Verwendungsbeispiel (Skeleton-seitiges Event-Publishing, Code-Fragment).
  • Architektur-Kontext: AUTOSAR Adaptive Platform (AP), Teilsystem ara::com (Communication Management).
  • Technischer Zweck: Demonstration des Versendens eines Events und des Eigentumsübergangs (Send()-Pattern mit std::move) auf Provider-/Skeleton-Seite zum Schutz vor unberechtigtem Datenzugriff nach Verteilung.

2. Komponenten, Entitäten & Schnittstellen

  • Service Skeleton / Service-Instanz:
    • myRadarService: Lokale Instanz einer generierten Skeleton-Klasse (Service-Provider).
    • BrakeEvent: Service-Event-Member der Skeleton-Instanz.
  • Speicher- und Zeigertypen:
    • curSamplePtr: Smart-Pointer-Instanz auf die Event-Nutzdaten, deren Eigentum übertragen wird.
  • Schnittstellen & Methoden:
    • BrakeEvent.Send(...): Verteilungs-API mit Ownership-Transfer.
    • std::move(): Standard-C++-Utility zur expliziten Übertragung der Eigentümerschaft an die Middleware.

3. Dynamisches Verhalten & Sequenzablauf

  1. Eigentumsübergabe & Dispatch (Send):
    • Aufruf von myRadarService.BrakeEvent.Send(std::move(curSamplePtr)).
    • Durch std::move geht die exklusive Eigentümerschaft an das Binding über. Die Middleware übernimmt die Verteilung an Consumer.
  2. Invalidierung des lokalen Zeigers:
    • Nach dem Move befindet sich curSamplePtr im Zustand moved-from.
    • Jeder nachfolgende Datenzugriff über curSamplePtr schlägt fehl, da die Eigentümerschaft abgegeben wurde.

4. Normative Relevanz & Entwickler-Hinweise

  • Lebenszyklus & Move-Semantik:
    • Der Entwickler muss die Move-Semantik zwingend einhalten. Ein Datenzugriff auf curSamplePtr nach dem Aufruf von Send() ist unzulässig (Use-After-Move), da der Zeiger seine Gültigkeit und Eigentümerschaft verliert.

Versionsvergleich KI-generiert · gemini-3.8-flash (via agy)

R17-03_R1.1.0 → R17-10_R1.2.0 redaktionell Vorgänger: FIG-477e81b5cf07d76d
  • Code-Ausschnitt oben abgeschnitten: Zeilen 8 bis 15 (Funktionssignatur void BrakeEventHandler(), Allokation über BrakeEvent.Allocate() und Befüllen von curSamplePtr) fehlen im Bild; das Listing beginnt erst ab Zeile 16 bzw. dem Kommentar in Zeile 17.
R17-10_R1.2.0 → R18-03_R1.4.0 redaktionell Nachfolger: FIG-477e81b5cf07d76d
  • Vollständiges Code-Listing wiederhergestellt: Zeilen 8 bis 15 mit void BrakeEventHandler(), Puffer-Allokation via myRadarService.BrakeEvent.Allocate() und Initialisierung der Datenfelder sind wieder enthalten.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

17 // Now notify event to consumers ... | 18 myRadarService.BrakeEvent.Send(std::move(curSamplePtr)); | 19 | 20 // Now any access to data via curSamplePtr would fail - we’ve given up | ownership! | 21 | 22 }

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R17-10_R1.2.0 AUTOSAR_EXP_ARAComAPI S. 63 6.23 Figure 6.23: Event Allocate/Send sample