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).
Dient als gemeinsame Basisklasse zur Dateigrößenabfrage und Positionsnavigation für spezialisierte Dateizugriffe.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: e1768b56d42cHerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Dient als gemeinsame Basisklasse zur Dateigrößenabfrage und Positionsnavigation für spezialisierte Dateizugriffe.
Die Klasse ara::per::FileAccessor dient im AUTOSAR-Persistenzmodul als gemeinsame Basisklasse zur Positionsnavigation und Größenprüfung geordneter Dateizugriffe ([SWS_PER_00424]). Sie unterbindet direkte Instanziierung sowie Kopiervorgänge durch gelöschte Konstruktoren ([SWS_PER_00589]). Bei ungültigen Positionsangaben greift eine Rollback-Semantik, die die aktuelle Zeigerposition schützt. Alle Operationen sind ausnahmesicher, verlangen jedoch bei nebenläufigem Einsatz eine externe Synchronisation.
Kontext
Die Klasse ara::per::FileAccessor dient im Persistenz-Modul (ara::per) der AUTOSAR Adaptive Platform als gemeinsame abstrakte Basisklasse für Dateizugriffsobjekte wie ReadAccessor und WriteAccessor. Ihre zentrale Verantwortung ist die einheitliche Schnittstelle zur dateibezogenen Positionsverwaltung und Größenprüfung. Die Klasse fungiert als Kontrollinstanz für den Lese- und Schreibcursor innerhalb einer geöffneten Datei, enthält jedoch selbst keine Methoden zur eigentlichen Datenübertragung (wie Lesen oder Schreiben von Bytes). Die Navigation erfolgt entweder absolut ab Dateianfang oder relativ zu definierten Bezugspunkten.
Lebenszyklus
Die Klasse ara::per::FileAccessor kann nicht direkt instanziiert oder frei kopiert werden. Der Standardkonstruktor ist gelöscht ([SWS_PER_00589]), ebenso wie der Kopierkonstruktor ([SWS_PER_00592]) und der Kopierzuweisungsoperator ([SWS_PER_00593]). Auch Move-Semantiken sind explizit unterbunden: Sowohl der Move-Konstruktor ([SWS_PER_00590]) als auch der Move-Zuweisungsoperator ([SWS_PER_00591]) sind gelöscht. Daraus ergibt sich die Interpretation, dass Instanzen ausschließlich im Kontext konkreter Subklassen erzeugt und verwaltet werden.
Für eine sichere Freigabe sorgt der virtuelle Destruktor ~FileAccessor() ([SWS_PER_00594]), der eine polymorphe Zerstörung über Basisklassenzeiger ermöglicht. Bezüglich der Nebenläufigkeit sind sämtliche Memberfunktionen als nicht threadsicher spezifiziert ([SWS_PER_00162], [SWS_PER_00424], [SWS_PER_00107], [SWS_PER_00163], [SWS_PER_00164]). Konkurrierende Zugriffe verschiedener Threads auf dieselbe Instanz müssen folglich durch die Anwendung synchronisiert werden.
Nutzungspfad
Der typische Einsatz von FileAccessor umfasst die Abfrage der Dateigröße, die Ermittlung der momentanen Position sowie gezielte Positionsverschiebungen zur Vorbereitung von Lese- oder Schreibzugriffen:
Größenabfrage: Über GetSize() wird die aktuelle Dateigröße in Bytes ermittelt ([SWS_PER_00424]).
Positionsabfrage: Mit GetPosition() fragt die Anwendung den aktuellen Byte-Offset ab Dateianfang ab, der auch genau am Dateiende liegen kann ([SWS_PER_00162]).
Absolute Positionierung:SetPosition() setzt den Cursor auf einen absoluten Offset ab Dateianfang ([SWS_PER_00163]).
Relative Verschiebung:MovePosition() verschiebt den Cursor ausgehend von Origin::kBeginning, Origin::kCurrent oder Origin::kEnd um einen vorzeichenbehafteten Offset ([SWS_PER_00164]).
Dateiende-Prüfung: Die Methode IsEof() gibt an, ob die aktuelle Position das Dateiende erreicht hat ([SWS_PER_00107]).
Sämtliche Operationen von FileAccessor sind ausnahmesicher deklariert (noexcept). Potenzielle Fehlerzustände bei Navigationsaufrufen werden über ara::core::Result zurückgegeben:
Versucht eine Anwendung über SetPosition() eine Position jenseits des Dateiendes anzusteuern, schlägt der Aufruf mit dem Fehlercode PerErrc::kInvalidPosition fehl ([SWS_PER_00163]). Gleiches gilt für MovePosition(), falls die berechnete Zielposition negativ ausfallen würde oder hinter dem Dateiende liegt ([SWS_PER_00164]). Für beide Methoden ist eine strikte Rollback-Semantik verbindlich vorgeschrieben: Tritt ein Fehler auf, bleibt die zuvor gültige Position der Datei unverändert erhalten ([SWS_PER_00163], [SWS_PER_00164]).
Die abfragenden Methoden GetSize() ([SWS_PER_00424]), GetPosition() ([SWS_PER_00162]) und IsEof() ([SWS_PER_00107]) geben unmittelbar Basisdatentypen zurück und erzeugen keine spezifischen Fehlercodes.
Diesen Text hat eine KI auf Basis der AUTOSAR-Spezifikation R25-11 verfasst. Er ergänzt die normative Dokumentation um ein Gesamtbild der Navigationsabstraktion.
Moves the current position in the file relative to the Origin. In case of an error, the current position is not changed.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 436bd0736ae4Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die synchrone Methode MovePosition der Klasse ara::per::FileAccessor verschiebt die aktuelle Dateiposition relativ zu einem definierten Bezugspunkt [SWS_PER_00164]. Die Funktion ist als noexcept deklariert [SWS_PER_00164]. Als Parameter übernimmt sie den Ausgangspunkt origin vom Typ Origin sowie den vorzeichenbehafteten Byte-Versatz offset[SWS_PER_00164]. Bei erfolgreicher Ausführung liefert die Methode ein ara::core::Result mit der resultierenden absoluten Byte-Position ab Dateibeginn zurück [SWS_PER_00164].
Zusammenspiel und Parameterwerte
Der Referenzpunkt origin wird durch die Enumeration Origin festgelegt [SWS_PER_00146]:
Origin::kCurrent: Verschiebung ab der aktuellen Dateiposition; offset darf positiv oder negativ sein, wobei ein Wert von null die Position nicht ändert [SWS_PER_00164], [SWS_PER_00146].
Origin::kEnd: Verschiebung relativ zum Dateiende; offset darf negativ sein, während ein Versatz von null die Position exakt auf das Dateiende setzt [SWS_PER_00164], [SWS_PER_00146].
Fehlerbehandlung
Im Fehlerfall wird die bisherige Dateiposition durch eine Rollback-Semantik nicht verändert [SWS_PER_00164]. Ergibt der berechnete Zielpunkt einen Wert kleiner als null oder liegt dieser jenseits des Dateiendens, wird der Fehlercode PerErrc::kInvalidPosition zurückgegeben [SWS_PER_00164]. Zudem kann das Ergebnis herstellerspezifische Fehler enthalten [SWS_PER_00164].
Nebenläufigkeit und Einschränkungen
Die Methode ist als exception safe spezifiziert [SWS_PER_00164]. Da die Implementierung als not thread-safe eingestuft ist, müssen parallele Zugriffe auf dieselbe Instanz von FileAccessor aufruferseitig synchronisiert werden [SWS_PER_00164].
Dieser Text wurde durch ein KI-System erstellt und durch autodocs kuratiert.
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-medium· 2026-10-13