FileAccessor contains a common basis for ReadAccessor and WriteAccessor. It provides methods for checking and setting the current position in the file (GetPosition, Set Position, MovePosition, IsEof) and for checking the current size of the file (GetSize).
Sert de classe de base commune pour l'interrogation de la taille de fichier et la navigation dans les positions pour les accès spécialisés aux fichiers.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : e1768b56d42cProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Sert de classe de base commune pour l'interrogation de la taille de fichier et la navigation dans les positions pour les accès spécialisés aux fichiers.
La classe ara::per::FileAccessor sert, dans le module de persistance AUTOSAR, de classe de base commune pour la navigation dans les positions et la vérification de la taille des accès ordonnés aux fichiers ([SWS_PER_00424]). Elle empêche l'instanciation directe ainsi que les opérations de copie par des constructeurs supprimés ([SWS_PER_00589]). En cas d'indications de position non valides, une sémantique de rollback intervient et protège la position actuelle du curseur. Toutes les opérations sont sécurisées vis-à-vis des exceptions, mais exigent une synchronisation externe en cas d'utilisation concurrente.
Contexte
La classe ara::per::FileAccessor sert, dans le module de persistance (ara::per) de l'AUTOSAR Adaptive Platform, de classe de base abstraite commune pour les objets d'accès aux fichiers tels que ReadAccessor et WriteAccessor. Sa responsabilité centrale est l'interface uniforme pour la gestion des positions liée aux fichiers et la vérification de la taille. La classe fait office d'instance de contrôle pour le curseur de lecture et d'écriture au sein d'un fichier ouvert, mais ne contient elle-même aucune méthode pour le transfert de données effectif (comme la lecture ou l'écriture d'octets). La navigation s'effectue soit de manière absolue à partir du début du fichier, soit de manière relative par rapport à des points de référence définis.
Cycle de vie
La classe ara::per::FileAccessor ne peut être ni instanciée directement ni librement copiée. Le constructeur par défaut est supprimé ([SWS_PER_00589]), tout comme le constructeur de copie ([SWS_PER_00592]) et l'opérateur d'affectation par copie ([SWS_PER_00593]). Les sémantiques de déplacement sont également explicitement empêchées : le constructeur de déplacement ([SWS_PER_00590]) tout comme l'opérateur d'affectation par déplacement ([SWS_PER_00591]) sont supprimés. Il en découle l'interprétation selon laquelle les instances sont créées et gérées exclusivement dans le contexte de sous-classes concrètes.
Une libération sûre est assurée par le destructeur virtuel ~FileAccessor() ([SWS_PER_00594]), qui permet une destruction polymorphe via des pointeurs de classe de base. En ce qui concerne la concurrence, toutes les fonctions membres sont spécifiées comme non thread-safe ([SWS_PER_00162], [SWS_PER_00424], [SWS_PER_00107], [SWS_PER_00163], [SWS_PER_00164]). Les accès concurrents de différents threads à la même instance doivent par conséquent être synchronisés par l'application.
Parcours d'utilisation
L'utilisation typique de FileAccessor comprend l'interrogation de la taille du fichier, la détermination de la position actuelle ainsi que des déplacements ciblés de position afin de préparer les accès en lecture ou en écriture :
Interrogation de la taille : La taille actuelle du fichier en octets est déterminée via GetSize() ([SWS_PER_00424]).
Interrogation de position : À l'aide de GetPosition(), l'application interroge le décalage actuel en octets à partir du début du fichier, qui peut également se situer exactement à la fin du fichier ([SWS_PER_00162]).
Positionnement absolu :SetPosition() place le curseur sur un décalage absolu à partir du début du fichier ([SWS_PER_00163]).
Déplacement relatif :MovePosition() déplace le curseur d'un décalage signé à partir de Origin::kBeginning, Origin::kCurrent ou Origin::kEnd ([SWS_PER_00164]).
Vérification de fin de fichier : La méthode IsEof() indique si la position actuelle a atteint la fin du fichier ([SWS_PER_00107]).
Toutes les opérations de FileAccessor sont déclarées sûres vis-à-vis des exceptions (noexcept). Les états d'erreur potentiels lors des appels de navigation sont renvoyés via ara::core::Result :
Si une application tente, via SetPosition(), d'atteindre une position au-delà de la fin du fichier, l'appel échoue avec le code d'erreur PerErrc::kInvalidPosition ([SWS_PER_00163]). Il en va de même pour MovePosition() si la position cible calculée s'avère négative ou se situe après la fin du fichier ([SWS_PER_00164]). Pour les deux méthodes, une sémantique stricte de rollback est obligatoirement prescrite : si une erreur survient, la position précédemment valide du fichier reste inchangée ([SWS_PER_00163], [SWS_PER_00164]).
Les méthodes d'interrogation GetSize() ([SWS_PER_00424]), GetPosition() ([SWS_PER_00162]) et IsEof() ([SWS_PER_00107]) renvoient directement des types de données de base et ne génèrent aucun code d'erreur spécifique.
Ce texte a été rédigé par une IA sur la base de la spécification AUTOSAR R25-11. Il complète la documentation normative par une vue d'ensemble de l'abstraction de navigation.
Moves the current position in the file relative to the Origin. In case of an error, the current position is not changed.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 436bd0736ae4Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation
La méthode synchrone MovePosition de la classe ara::per::FileAccessor déplace la position actuelle du fichier par rapport à un point de référence défini [SWS_PER_00164]. La fonction est déclarée comme noexcept[SWS_PER_00164]. En tant que paramètres, elle prend en charge le point de départ origin de type Origin ainsi que le décalage d'octets signé offset[SWS_PER_00164]. En cas d'exécution réussie, la méthode renvoie un ara::core::Result contenant la position d'octets absolue résultante à partir du début du fichier [SWS_PER_00164].
Interaction et valeurs des paramètres
Le point de référence origin est défini par l'énumération Origin[SWS_PER_00146] :
Origin::kBeginning : décalage à partir du début du fichier ; offset peut être positif dans ce cas [SWS_PER_00164], [SWS_PER_00146].
Origin::kCurrent : décalage à partir de la position actuelle du fichier ; offset peut être positif ou négatif, une valeur de zéro ne modifiant pas la position [SWS_PER_00164], [SWS_PER_00146].
Origin::kEnd : décalage relatif à la fin du fichier ; offset peut être négatif, tandis qu'un décalage de zéro place la position exactement sur la fin du fichier [SWS_PER_00164], [SWS_PER_00146].
Gestion des erreurs
En cas d'erreur, la position précédente du fichier n'est pas modifiée grâce à une sémantique de retour arrière [SWS_PER_00164]. Si le point cible calculé donne une valeur inférieure à zéro ou se situe au-delà de la fin du fichier, le code d'erreur PerErrc::kInvalidPosition est renvoyé [SWS_PER_00164]. De plus, le résultat peut contenir des erreurs spécifiques au constructeur [SWS_PER_00164].
Concurrence et restrictions
La méthode est spécifiée comme exception safe[SWS_PER_00164]. Étant donné que l'implémentation est classifiée comme not thread-safe, les accès parallèles à la même instance de FileAccessor doivent être synchronisés du côté de l'appelant [SWS_PER_00164].
Ce texte a été généré par un système d'IA et sélectionné par autodocs.
Offset in bytes relative to ’origin’. Can be positive in case of k Beginning and kCurrent and negative in case of kCurrent and k End. In case of kCurrent, an offset of zero will not change the current position. In case of kEnd, an offset of zero will set the position to the end of the file.
A Result containing the new position in bytes from the beginning of the file. In case of an error, it contains any of the errors defined below, or a vendor specific error.
gemini-3.8-flash-low· 2026-10-13 · Original allemand