template <typename T> class UniqueHandle final {...};
Handle to a ReadAccessor or ReadWriteAccessor. A UniqueHandle is returned by the functions OpenFileReadOnly(), OpenFileWriteOnly(), and OpenFileReadWrite().
Beheert de exclusieve, verplaatsbare toegang tot bestandsaccessor-objecten met RAII-semantiek.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 7be811cdf7d8HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Beheert de exclusieve, verplaatsbare toegang tot bestandsaccessor-objecten met RAII-semantiek.
Het klassetemplate ara::per::UniqueHandle beheert het exclusieve eigenaarschap van bestandsaccessor-objecten van AUTOSAR-persistentie binnen het kader van een strikte move-only-semantiek. Na ontvangst via bestandstoegangsfuncties moet de instantie voorafgaand aan elk gebruik verplicht met operator bool() op geldigheid worden gecontroleerd [SWS_PER_00371]. Een aanroep van andere operators op een lege of overgedragen handle leidt tot ongedefinieerd gedrag [SWS_PER_00399]. Alle bewerkingen zijn gedeclareerd als noexcept, waarbij leestoegangen thread-safe zijn, maar modificerende bewerkingen daarentegen niet.
Context
Het klassetemplate ara::per::UniqueHandle dient als typeveilige toegangs-handle naar resource-objecten van AUTOSAR Adaptive-persistentie, te weten ReadAccessor of ReadWriteAccessor. Het wordt geleverd als retourwaarde van de functies OpenFileReadOnly(), OpenFileWriteOnly() en OpenFileReadWrite() en kapselt het exclusieve eigenaarschap van de geopende bestandstoegangsinterface in.
Levenscyclus
De klasse implementeert een strikte move-only-semantiek (Unique Ownership). Om abusievelijke duplicatie van de toegang of gedeeld eigenaarschap te voorkomen, zijn zowel de copy constructor [SWS_PER_00373] als de copy assignment operator [SWS_PER_00374] gedefinieerd als verwijderd (delete). Eigendomsrechten kunnen uitsluitend door verplaatsen worden overgedragen: bij aanroep van de move constructor [SWS_PER_00371] of de move assignment [SWS_PER_00372] wordt het meegegeven bronobject geïnvalideerd en mag het daarna niet meer worden gebruikt.
Een UniqueHandle bevindt zich op elk moment in een geldige toestand (het representeert een valide object van de geparametriseerde klasse) of in een lege respectievelijk geïnvalideerde toestand, zoals die ontstaat na een move-overdracht [SWS_PER_00399]. Bij het beëindigen van de scope wordt de destructor [SWS_PER_00569] uitgevoerd. Vermoedelijk sluit of ruimt de vernietiging van een geldige handle de ingekapselde toegangsbron automatisch op. Vraag Q-e7f12aa0d7c5548d (open)
Het typische gebruik van UniqueHandle volgt een vastgelegde volgorde van stappen:
Overname van de handle: De applicatie ontvangt de handle als resultaat van een aanroep voor bestandstoegang zoals OpenFileReadOnly(), OpenFileWriteOnly() of OpenFileReadWrite().
Toestandscontrole: Voorafgaand aan elke verdere bewerking moet de status van de instantie verplicht via operator bool() worden geverifieerd [SWS_PER_00371], [SWS_PER_00372]. De operator retourneert true als er sprake is van een geldig object, en false als de handle leeg is [SWS_PER_00399].
Toegang tot het ingekapselde object: Bij een geldige status worden via de pijl-operators operator-> (niet-constant [SWS_PER_00360] of constant [SWS_PER_00361]) of via dereferentie met operator* (niet-constant [SWS_PER_00400] of constant [SWS_PER_00401]) de methoden en gegevens van het doel benaderd.
Eigendomsoverdracht of vernietiging: De handle kan desgewenst via std::move aan een andere component worden overgedragen [SWS_PER_00371] of wordt aan het einde van de levensduur automatisch vernietigd [SWS_PER_00569].
Foutscenario's
Een centraal foutscenario is de toegang tot een lege of overgedragen handle: het gebruik van andere operators dan operator bool() op een lege handle leidt volgens de specificatie tot ongedefinieerd gedrag (Undefined Behavior) [SWS_PER_00399]. Voorafgaand aan elke dereferentie is een controle daarom dwingend voorgeschreven [SWS_PER_00371], [SWS_PER_00372].
Wat betreft uitzonderingsveiligheid en concurrency gelden de volgende specificatiedetails:
Move constructor for UniqueHandle. The source handle object is invalidated and cannot be used anymore. The operator bool() shall be used to check the state of a handle object before using any other operators of the handle object.
Move assignment operator for UniqueHandle. The source handle object is invalidated and cannot be used anymore. The operator bool() shall be used to check the state of a handle object before using any other operators of the handle object.
Handle state. True if the handle represents a valid object of the templated class, False if the handle is empty (e.g. after a move operation). Using other operators than bool() of an empty handle will result in undefined behavior.
Move constructor for UniqueHandle. The source handle object is invalidated and cannot be used anymore. The operator bool() shall be used to check the state of a handle object before using any other operators of the handle object.
Move assignment operator for UniqueHandle. The source handle object is invalidated and cannot be used anymore. The operator bool() shall be used to check the state of a handle object before using any other operators of the handle object.
Handle state. True if the handle represents a valid object of the templated class, False if the handle is empty (e.g. after a move operation). Using other operators than bool() of an empty handle will result in undefined behavior.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel