template <typename T> class UniqueHandle final {...};
Handle to a ReadAccessor or ReadWriteAccessor. A UniqueHandle is returned by the functions OpenFileReadOnly(), OpenFileWriteOnly(), and OpenFileReadWrite().
Gère l'accès exclusif et déplaçable aux objets accesseurs de fichiers avec sémantique RAII.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 7be811cdf7d8ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Gère l'accès exclusif et déplaçable aux objets accesseurs de fichiers avec sémantique RAII.
Le template de classe ara::per::UniqueHandle gère la propriété exclusive d'objets accesseurs de fichiers de la persistance AUTOSAR dans le cadre d'une sémantique stricte à déplacement seul (move-only). Après obtention via des fonctions d'accès aux fichiers, l'instance doit obligatoirement faire l'objet d'un contrôle de validité au moyen de operator bool() avant toute utilisation [SWS_PER_00371]. Un appel d'autres opérateurs sur un handle vide ou transféré conduit à un comportement indéfini [SWS_PER_00399]. Toutes les opérations sont déclarées comme noexcept, les accès en lecture étant thread-safe, tandis que les opérations de modification ne le sont pas.
Contexte
Le template de classe ara::per::UniqueHandle sert de handle d'accès typé aux objets de ressources de la persistance AUTOSAR Adaptive, à savoir ReadAccessor ou ReadWriteAccessor. Il est fourni comme valeur de retour des fonctions OpenFileReadOnly(), OpenFileWriteOnly() ainsi que OpenFileReadWrite() et encapsule la propriété exclusive de l'interface d'accès aux fichiers ouverte.
Cycle de vie
La classe implémente une sémantique stricte à déplacement seul (Unique Ownership). Afin d'empêcher les duplications accidentelles de l'accès ou la propriété partagée, le constructeur de copie [SWS_PER_00373] ainsi que l'opérateur d'affectation par copie [SWS_PER_00374] sont tous deux définis comme supprimés (delete). Les droits de propriété peuvent être transférés exclusivement par déplacement : lors de l'appel du constructeur de déplacement [SWS_PER_00371] ou de l'affectation par déplacement [SWS_PER_00372], l'objet source transmis est invalidé et ne doit plus être utilisé par la suite.
Un UniqueHandle se trouve à tout instant soit dans un état valide (il représente un objet valide de la classe paramétrée), soit dans un état vide ou invalidé tel qu'il se présente après un transfert par déplacement [SWS_PER_00399]. À la fin de la portée, le destructeur [SWS_PER_00569] est exécuté. Vraisemblablement, la destruction d'un handle valide ferme ou nettoie automatiquement la ressource d'accès encapsulée. Question Q-e7f12aa0d7c5548d (ouverte)
L'utilisation typique de UniqueHandle suit une succession définie d'étapes :"}
Prise en charge du handle : l'application reçoit le handle comme résultat d'un appel d'accès aux fichiers tel que OpenFileReadOnly(), OpenFileWriteOnly() ou OpenFileReadWrite().
Vérification d'état : avant toute autre opération, l'état de l'instance doit impérativement être vérifié au moyen de operator bool()[SWS_PER_00371], [SWS_PER_00372]. L'opérateur renvoie true si un objet valide est présent, et false lorsque le handle est vide [SWS_PER_00399].
Accès à l'objet encapsulé : en cas d'état valide, l'accès aux méthodes et aux données de la cible s'effectue via les opérateurs flèche operator-> (non constant [SWS_PER_00360] ou constant [SWS_PER_00361]) ou via un déréférencement au moyen de operator* (non constant [SWS_PER_00400] ou constant [SWS_PER_00401]).
Transfert de propriété ou destruction : le handle peut au besoin être transféré à un autre composant via std::move[SWS_PER_00371] ou est automatiquement détruit à la fin de sa durée de vie [SWS_PER_00569].
Scénarios d'erreur
Un scénario d'erreur central est constitué par l'accès à un handle vide ou transféré : selon la spécification, l'utilisation d'opérateurs autres que operator bool() sur un handle vide conduit à un comportement indéfini (Undefined Behavior) [SWS_PER_00399]. Une vérification est donc obligatoirement prescrite avant tout déréférencement [SWS_PER_00371], [SWS_PER_00372].
En ce qui concerne la sécurité vis-à-vis des exceptions et la concurrence, les détails de spécification suivants s'appliquent :
Sécurité des threads : les opérateurs de lecture operator*[SWS_PER_00400], [SWS_PER_00401], operator->[SWS_PER_00360], [SWS_PER_00361] ainsi que operator bool()[SWS_PER_00399] sont thread-safe. En revanche, les actions de modification telles que l'affectation par déplacement [SWS_PER_00372] et la destruction via le destructeur [SWS_PER_00569] sont explicitement non thread-safe et nécessitent une synchronisation externe en cas d'accès concurrent.
Ce guide a été généré par une IA sur la base de la spécification AUTOSAR R25-11.
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 · Original allemand