The ara::com::SamplePtr behaves as a std::unique_ptr as long as the event/ field is subscribed to, or the Proxy it belongs to is not destroyed. The precondition defined in [SWS_CM_00085] and [SWS_CM_00087] must be fulfilled. Otherwise it is considered a violation.
Note: The SamplePtr is always passed with a const SampleType to the callable in GetNewSamples() (see [SWS_CM_00701]). Therefore the sample datatype (typename T) and the SamplePtr operators using the sample datatype (typename T) are implicitly declared as const. This means that the sample data will always be read-only.
Biedt exclusieve leestoegang tot ontvangen gebeurtenissen en beheert de levensduur van het middlewaregeheugen.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: f5d97c2beaf2HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Biedt exclusieve leestoegang tot ontvangen gebeurtenissen en beheert de levensduur van het middlewaregeheugen.
De templateklasse omhult het exclusieve bezit van ontvangen gebeurtenismonsters naar het voorbeeld van std::unique_ptr en verleent de applicatie directe, onveranderlijke leestoegang tot buffers van de middleware (EXP ARAComAPI §5.3.5.4). Instanties worden bij het opvragen van nieuwe monsters overgedragen, kunnen uitsluitend via move-semantiek worden verplaatst en houden de geheugenruimte bezet ([SWS_CM_11537]). Pas de vernietiging van de pointer of een expliciete reset naar null geeft het buffer-slot weer vrij. De geldigheid vereist dat de gebeurtenis geabonneerd blijft en de bijbehorende proxy bestaat.
Context
De templateklasse ara::com::SamplePtr vormt in het Adaptive Platform het centrale toegangs- en eigendomsmodel voor ontvangen eventdata (event samples) (EXP ARAComAPI §5.3.5.4). Semantisch bootst de klasse een exclusieve smart pointer na naar het voorbeeld van std::unique_ptr (EXP ARAComAPI §5.3.5.4). De primaire interactiepartners zijn de applicatielaag, het ontvangende event- respectievelijk proxy-object en de onderliggende communicatie-middleware ara::com, die de bufferbronnen beheert (EXP ARAComAPI, p. 44, EXP ARAComAPI, p. 50).
Het concept volgt uitdrukkelijk een op referenties gebaseerde zero-copy-benadering: in plaats van eventdata via een waardekopie aan de applicatie over te dragen, geeft ara::com pointers respectievelijk referenties naar centrale communicatiebuffers door (EXP ARAComAPI, p. 50). In typische 1:N-distributiescenario's kunnen lokale event-caches daardoor louter via referentie-updates worden bediend, wat het geheugengebruik en de latentie minimaliseert (EXP ARAComAPI, p. 50). De toegang tot de payload is conceptueel strikt lezend ontworpen: bij het beschikbaar stellen wordt SamplePtr altijd met een constant payloadtype geïnstantieerd (ara::com::SamplePtr<SampleType const>), waarmee alle toegangsoperatoren impliciet constant zijn (EXP ARAComAPI, p. 39, EXP ARAComAPI, p. 44, [SWS_CM_00701]).
Levenscyclus
Instanties van SamplePtr kunnen als lege pointers via de standaardconstructor of met nullptr worden aangemaakt ([SWS_CM_11534], [SWS_CM_11535]). Geldige instanties die met payload zijn gevuld, ontstaan daarentegen binnen de middleware bij de deserialisatie van events in bufferslots en worden in het kader van GetNewSamples() aan een callable aan applicatiezijde overgedragen (EXP ARAComAPI, p. 44).
Met de overdracht vindt een volledige eigendomsoverdracht (ownership transfer) naar de applicatie plaats (EXP ARAComAPI §5.3.5.4). Om de exclusiviteit van het eigendom te garanderen, zijn de copy constructor en copy assignment operator verwijderd ([SWS_CM_11536], [SWS_CM_11538]). Een overdracht van het beheerde geheugenslot is uitsluitend mogelijk via move constructie of move assignment ([SWS_CM_11537], [SWS_CM_11540]), terwijl Swap() het omwisselen van twee pointerinhouden toestaat ([SWS_CM_11544]).
Zolang een SamplePtr-instantie bestaat en de sample vasthoudt, kan de middleware de bezette geheugenruimte niet terugvorderen of overschrijven (EXP ARAComAPI §5.3.5.4). De vrijgave van het middleware-slot vindt pas plaats wanneer de levensduur van de SamplePtr eindigt door het aanroepen van de destructor ([SWS_CM_11547]) of wanneer de pointer expliciet leeggemaakt wordt door middel van Reset(nullptr) respectievelijk toewijzing van nullptr ([SWS_CM_11539], [SWS_CM_11545]).
Het typische verloop van de datatoegang is opgedeeld in de volgende stappen:
Sample-query starten: De applicatie roept op de event-proxy GetNewSamples() aan en draagt een passende callbackfunctie met de signatuur void(ara::com::SamplePtr<SampleType const>) en een bovengrens voor het aantal op te halen samples over (EXP ARAComAPI, p. 44).
Overdracht aan de callback: Als er nieuwe gegevens beschikbaar zijn en het bufferquotum niet is uitgeput, deserialiseert de middleware de sample en draagt de nieuwe SamplePtr-instantie over aan de callback (EXP ARAComAPI, p. 44).
End-to-end-status controleren: Via GetProfileCheckStatus() kan de applicatie het resultaat van de E2E-beveiligingscontrole voor het voorliggende datapakket opvragen ([SWS_CM_90420]).
Verdere verwerking of vrijgave: Als de sample na de callback bewaard moet blijven, verplaatst de applicatie de pointer via move constructie naar eigen geheugenstructuren ([SWS_CM_11537]). Blijft de pointer binnen de scope van de callback, dan wordt deze bij het verlaten automatisch vernietigd ([SWS_CM_11547]), wat het slot in de middleware onmiddellijk vrijgeeft (EXP ARAComAPI §5.3.5.4).
Bij het gebruik van SamplePtr moet rekening worden gehouden met specifieke randvoorwaarden en foutbronnen:
Uitputting van het bufferquotum: De middleware controleert bij elke aanroep van GetNewSamples() of het aantal momenteel door de applicatie vastgehouden samples het eerder bij het aanroepen van Subscribe() toegezegde quotum overschrijdt. Is het quotum overschreden, dan weigert GetNewSamples() de teruggave van verdere samples en retourneert in plaats daarvan een ara::core::ErrorCode (EXP ARAComAPI, p. 44, EXP ARAComAPI, p. 45).
Ongeldigheid door abonnementsverlies of vernietiging van de proxy:SamplePtr gedraagt zich alleen deterministisch als een std::unique_ptr zolang het onderliggende event geabonneerd blijft en de bovenliggende proxy-instantie bestaat. Het aanhouden van pointers voorbij het einde van het abonnement of de vernietiging van de proxy geldt als schending van de precondities.
Pointergeldigheid en null-status: Via operator bool() kan de bezettingsstatus van de pointer worden geëvalueerd ([SWS_CM_11543]). Het dereferenceren van een lege pointer via operator* of operator-> leidt tot ongedefinieerd gedrag. Alle toegangs- en modificatiemethoden zijn gedeclareerd als noexcept ([SWS_CM_11541], [SWS_CM_11542], [SWS_CM_11546]).
E2E-validatiefouten: Een geldig ontvangen pointer garandeert niet noodzakelijkerwijs foutloze overdrachtsdata; via de retourwaarde van GetProfileCheckStatus() moet de applicatie controleren of de end-to-end-beveiliging datacorruptie of overdrachtsvertragingen signaleert ([SWS_CM_90420]).
Deze klassenhandleiding is gegenereerd door een AI-curatie-assistent op basis van de AUTOSAR-specificaties voor Adaptive Platform Release R25-11.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 1cc8beae7ae3HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Gebruik en semantiek
De functie Get is een parameterloze lidfunctie van de klasse ara::com::SamplePtr uit header ara/com/service/sample_ptr.h[SWS_CM_11546]. Deze geeft synchroon een raw pointer van het type T* naar het door de instantie beheerde object terug [SWS_CM_11546]. In tegenstelling tot asynchrone opvragingen van servicevelden, die een ara::core::Future beschikbaar stellen [SWS_CM_00112], vindt deze toegang direct plaats in de aanroepende thread.
Foutafhandeling en randvoorwaarden
De methode is gedeclareerd als noexcept en gespecificeerd als exceptieveilig (exception safe) [SWS_CM_11546]; fouttoestanden via C++-excepties treden niet op. Indien de instantie momenteel geen object beheert, is de geretourneerde pointer vermoedelijk nullptr. Vraag Q-d850bd8ee144369a (open) Vóór de verdere verwerking van het gereferentieerde gegeven moet worden gewaarborgd dat de E2E-bewaking de toestand ara::com::e2e::SMState::kValid vertoont en de statuscontrole van het profiel geen fout opleverde [SWS_CM_90422].
Interactie en afbakening
In communicatiebeheer dient Get voor directe datatoegang tot ontvangen waarden (samples), zoals deze in het kader van sample-management beschikbaar worden gesteld AUTOSAR_AP_EXP_ARAComAPI §10 “GetNewSamples”. Deze functie moet duidelijk worden afgebakend van andere Get-operaties:
Veld-getter: Het ophalen van servicevelden op de proxy gebeurt via Get() met retournering van een ara::core::Future[SWS_CM_00112], waarvoor aan de serverzijde een handler kan worden geregistreerd [SWS_CM_00114].
E2E-toestand: De bewakingstoestand van een veld-getter wordt afzonderlijk bepaald via GetE2EStateMachineStateGetter[SWS_CM_00145].
Deze tekst is opgesteld door een AI en is gebaseerd op AUTOSAR-release R25-11.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 0a03c7966b10HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De lidfunctie Reset van de klasse ara::com::SamplePtr dient voor het resetten van de pointer naar het beheerde object [SWS_CM_11545]. Als parameter accepteert deze de waarde other van het type std::nullptr_t. De aanroep vervangt het momenteel vastgehouden object door een null-pointer en retourneert geen waarde (void) [SWS_CM_11545].
Wat betreft de foutafhandeling en exceptieveiligheid is de methode gedeclareerd met noexcept en gespecificeerd als onbeperkt exceptieveilig (exception safe) [SWS_CM_11545]. Er worden noch C++-excepties geworpen noch specifieke foutcodes gerapporteerd.
In het totale systeem vervult het vrijgeven van SamplePtr-instanties een essentiële voorwaarde om geheugenfouten te voorkomen:
Een vergelijkbare verplichting formuleert [SWS_CM_00085] vóór het afmelden van events of velden (Unsubscription).
Interpretatie: De expliciete aanroep van Reset(nullptr) is in toepassingsscenario's vermoedelijk het directe middel om het eigendom van een event-sample deterministisch op te geven vóór dergelijke levenscyclusovergangen, wanneer de pointer zijn geldigheidsbereik niet automatisch verlaat. Vraag Q-a615fa4078ab03ce (open)
Deze gebruiksinstructie is geautomatiseerd opgesteld op basis van de AUTOSAR-specificatie R25-11.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 18d4b3f3f0f9HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Gebruik
De functie Swap is een lidmethode van de klasse ara::com::SamplePtr en dient voor het verwisselen van het momenteel beheerde object met een andere instantie ([SWS_CM_11544]). De interface is gedefinieerd in header ara/com/service/sample_ptr.h (AUTOSAR_AP_SWS_CommunicationManagement §8.9.1.1.3.4 “Swap”).
De aanroep vindt synchroon plaats en verwacht de volgende parameter:
other: Referentie naar een andere instantie van ara::com::SamplePtr waarvan het beheerde object wordt uitgewisseld met dat van *this ([SWS_CM_11544]).
De methode heeft geen retourwaarde (void) ([SWS_CM_11544]).
Foutafhandeling
De signatuur is gedeclareerd met noexcept en geclassificeerd als exceptieveilig (exception safe) ([SWS_CM_11544]). De aanroep werpt geen excepties op en levert geen foutcodes op.
Gelijktijdigheid en beperkingen
Aangezien Swap de toestand van twee objecten (*this en other) tegelijkertijd wijzigt, zijn parallelle aanroepen op ten minste een van de betrokken instanties zonder externe synchronisatie vermoedelijk niet thread-safe. Vraag Q-d906e8c05aefbd15 (open)
Samenspel
De methode is een integraal onderdeel van de klasse ara::com::SamplePtr ([SWS_CM_11544]). Deze maakt een efficiënte eigendomsoverdracht of hertoewijzing van ontvangen datasamples in communicatiestromen mogelijk, zonder dat het onderliggende payload-object hoeft te worden gekopieerd.
Deze gebruiksinstructie is automatisch opgesteld op basis van de specificatiedocumenten.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel