Maakt het gecombineerd lezen en schrijven van bestandsgegevens via een gemeenschappelijke toegangsinterface mogelijk.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 6c41c48fc5a7HerkomstOpen vragen (3)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Maakt het gecombineerd lezen en schrijven van bestandsgegevens via een gemeenschappelijke toegangsinterface mogelijk.
De klasse ara::per::ReadWriteAccessor combineert de interfaces van ReadAccessor en WriteAccessor om het lezen en schrijven van bestandsgegevens in het AUTOSAR Adaptive Platform via een gemeenschappelijk object mogelijk te maken. Een directe instantiëring via de standaardconstructor is niet toegestaan, aangezien deze expliciet is verwijderd [SWS_PER_00462]. Bij het vernietigen van de instantie garandeert de als noexcept gedeclareerde destructor volledige uitzonderingsveiligheid, maar is uitdrukkelijk niet als thread-safe gespecificeerd en vereist daarom gesynchroniseerde toegang [SWS_PER_00598].
Context
De klasse ara::per::ReadWriteAccessor vormt in de module per (Persistency) van het AUTOSAR Adaptive Platform de centrale interface om bestandsgegevens zowel te lezen als te schrijven. Deze bundelt de functionaliteiten van de gescheiden lees- en schrijftoegang door de mogelijkheden van de basisklassen ReadAccessor en WriteAccessor samen te brengen. De klassedeclaratie vindt plaats via het headerbestand ara/per/read_write_accessor.h[SWS_PER_00462].
In de typearchitectuur is ReadWriteAccessor via meervoudige overerving gedefinieerd als subklasse van ReadAccessor en WriteAccessor en gemarkeerd met de identificator final. Dit voorkomt verdere afleiding door applicatieontwikkelaars en waarborgt dat de gecombineerde toegangssemantiek ongewijzigd blijft. Als interactiepartners fungeren derhalve de twee gespecialiseerde basisklassen, waarvan de gezamenlijke interfacecontracten op een uniforme toegangslaag voor bestanden worden geprojecteerd.
Contextdiagram: overervingshiërarchie en rolrelatie tussen ReadWriteAccessor, ReadAccessor en WriteAccessor. Bronnen: [SWS_PER_00462], [SWS_PER_00598]
Levenscyclus
De levenscyclus van een instantie van ara::per::ReadWriteAccessor is onderworpen aan strikte structurele voorschriften. Conform [SWS_PER_00462] is de parameterloze standaardconstructor expliciet verwijderd (ReadWriteAccessor() = delete;). Een directe creatie zonder context of parameters is daarom niet toegestaan. Uit architecturaal oogpunt (interpretatie) worden instanties van deze klasse vermoedelijk typisch beschikbaar gesteld door bovengeschikte beheerfuncties of creatiemechanismen van het persistentiesubsysteem, zodra een bestand voor gecombineerd lees- en schrijfbedrijf wordt geopend. Vraag Q-9b390ab33102d524 (open)
Het vrijgeven van de instantie vindt plaats via de destructor ~ReadWriteAccessor(), die als final en noexcept is gedeclareerd [SWS_PER_00598]. Het beëindigen van de objectlevenscyclus vereist bijzondere aandacht met betrekking tot gelijktijdigheid: de destructor is in de specificatie expliciet als niet thread-safe („not thread-safe”) geclassificeerd [SWS_PER_00598]. De aanroepende software moet zodoende garanderen dat tijdens de vernietiging van het object geen parallelle lees- of schrijfbewerkingen op dezelfde instantie plaatsvinden. Volgens de interpretatie is de destructor bij het ordentelijk verlaten van de scope vermoedelijk verantwoordelijk voor het sluiten van geopende bestandsdescriptors en het opschonen van resterende interne toestanden. Vraag Q-49e2fdfd53789afd (open)
Wat betreft de eigendomsverhouding bevindt het object zich typisch in de lokale scope van de gebruikende component of wordt het beheerd via pointerstructuren. Aangezien gelijktijdige modificatie en vernietiging niet zijn beveiligd, mag een instantie (interpretatie) vermoedelijk niet onbeschermd tussen concurrente uitvoeringscontexten worden gedeeld. Vraag (open)
Foutscenario's
Foutsituaties in de omgang met ara::per::ReadWriteAccessor manifesteren zich zowel tijdens compilatietijd als tijdens runtime door specifieke pre- en postcondities. Een essentiële statische preconditie is het verbod op standaardinstantiëring: aangezien de parameterloze constructor is verwijderd, leidt elke poging tot directe constructie tot een onmiddellijke compilatiefout [SWS_PER_00462]. Hierdoor wordt voorkomen dat niet-geïnitialiseerde of ongeldige accessor-objecten in het systeem bestaan.
Wat betreft het uitzonderingsniveau biedt de klasse bij afbraak een gegarandeerde uitzonderingsveiligheid: de destructor is gedefinieerd als noexcept en gespecificeerd als uitzonderingsveilig („exception safe”) [SWS_PER_00598]. Dit waarborgt dat zelfs bij fouten tijdens de opruimwerkzaamheden geen C++-uitzonderingen naar buiten worden gepropageerd, waardoor een veilige stack-unwinding gewaarborgd blijft.
Een kritiek foutscenario tijdens runtime vloeit voort uit het ontbreken van thread-safety van de destructor conform [SWS_PER_00598]. Wordt het object vernietigd terwijl een andere thread nog lees- of schrijfbewerkingen uitvoert, dan leidt dit tot ongedefinieerd gedrag of data-inconsistenties. De naleving van de threadgerelateerde precondities berust daarom volledig op het aanroepende systeemontwerp.
Deze klassehandleiding is gebaseerd op de specificatie AUTOSAR Adaptive Platform R25-11 voor de module Persistency (per).
UML-klassendiagram
Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel