DEENESPTFRRUARHIKOZHNL

class ara::per::ReadWriteAccessor

[SWS_PER_00343] Upstream: RS_PER_00004, RS_AP_00122, RS_AP_00146

class ReadWriteAccessor final :               public ReadAccessor, public WriteAccessor {...};

ReadWriteAccessor is used to read and write file data. It combines the capabilities of the ReadAccessor with the WriteAccessor.

Header-Datei#include "ara/per/read_write_accessor.h"
Forwarding-Header#include "ara/per/per_fwd.h"
Scopenamespace ara::per
Basisklasse(n)ReadAccessor, WriteAccessor

User GuideKI-GENERIERT

Ermöglicht das kombinierte Lesen und Schreiben von Dateidaten über eine gemeinsame Zugriffsschnittstelle.
KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 6c41c48fc5a7 Herkunft Offene Fragen (3)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Ermöglicht das kombinierte Lesen und Schreiben von Dateidaten über eine gemeinsame Zugriffsschnittstelle.

Die Klasse ara::per::ReadWriteAccessor kombiniert die Schnittstellen von ReadAccessor und WriteAccessor, um das Lesen und Schreiben von Dateidaten in der AUTOSAR Adaptive Platform über ein gemeinsames Objekt zu ermöglichen. Eine direkte Instanziierung über den Standardkonstruktor ist nicht zulässig, da dieser explizit gelöscht ist [SWS_PER_00462]. Beim Zerstören der Instanz garantiert der als noexcept deklarierte Destruktor vollständige Ausnahme-Sicherheit, ist jedoch ausdrücklich nicht threadsicher spezifiziert und erfordert daher einen synchronisierten Zugriff [SWS_PER_00598].

Kontext

Die Klasse ara::per::ReadWriteAccessor stellt im Modul per (Persistency) der AUTOSAR Adaptive Platform die zentrale Schnittstelle dar, um Dateidaten sowohl zu lesen als auch zu schreiben. Sie bündelt die Funktionalitäten des getrennten Lese- und Schreibzugriffs, indem sie die Fähigkeiten der Basisklassen ReadAccessor und WriteAccessor zusammenführt. Die Klassendeklaration erfolgt über die Header-Datei ara/per/read_write_accessor.h [SWS_PER_00462].

In der Typarchitektur ist ReadWriteAccessor über Mehrfachvererbung als Unterklasse von ReadAccessor sowie WriteAccessor definiert und mit dem Bezeichner final markiert. Dies verhindert eine weitere Ableitung durch Anwendungsentwickler und stellt sicher, dass die kombinierte Zugriffssemantik unverändert bleibt. Als Interaktionspartner fungieren folglich die beiden spezialisierten Basisklassen, deren gemeinsame Schnittstellenverträge auf eine einheitliche Zugriffsschicht für Dateien projiziert werden.

diag_kontext ReadWriteAccessor ReadWriteAccessor ReadAccessor ReadAccessor ReadWriteAccessor->ReadAccessor erbt von WriteAccessor WriteAccessor ReadWriteAccessor->WriteAccessor erbt von

Kontextdiagramm: Vererbungshierarchie und Rollenbeziehung zwischen ReadWriteAccessor, ReadAccessor und WriteAccessor. Quellen: [SWS_PER_00462], [SWS_PER_00598]

Lebenszyklus

Der Lebenszyklus einer Instanz von ara::per::ReadWriteAccessor unterliegt strengen strukturellen Vorgaben. Gemäß [SWS_PER_00462] ist der parameterlose Standardkonstruktor explizit gelöscht (ReadWriteAccessor() = delete;). Eine direkte Erzeugung ohne Kontext oder Parameter ist daher unzulässig. Aus architektonischer Sicht (Interpretation) dürften Instanzen dieser Klasse typischerweise durch übergeordnete Verwaltungsfunktionen oder Erzeugungsmechanismen des Persistenz-Subsystems bereitgestellt werden, sobald eine Datei für den kombinierten Lese- und Schreibbetrieb geöffnet wird. Frage Q-9b390ab33102d524 (offen)

Die Freigabe der Instanz erfolgt über den Destruktor ~ReadWriteAccessor(), der als final und noexcept deklariert ist [SWS_PER_00598]. Das Beenden des Objektlebenszyklus erfordert besondere Beachtung hinsichtlich der Nebenläufigkeit: Der Destruktor ist in der Spezifikation explizit als nicht threadsicher („not thread-safe“) eingestuft [SWS_PER_00598]. Die aufrufende Software muss somit garantieren, dass während der Zerstörung des Objekts keine parallelen Lese- oder Schreibvorgänge auf derselben Instanz stattfinden. Nach der Interpretation dürfte der Destruktor beim geordneten Verlassen des Gültigkeitsbereichs für das Schließen geöffneter Dateideskriptoren sowie das Bereinigen verbleibender interner Zustände verantwortlich sein. Frage Q-49e2fdfd53789afd (offen)

Hinsichtlich des Besitzverhältnisses liegt das Objekt typischerweise im lokalen Gültigkeitsbereich der anwendenden Komponente oder wird über Zeigerstrukturen verwaltet. Da eine gleichzeitige Modifikation und Zerstörung nicht abgesichert ist, darf eine Instanz (Interpretation) vermutlich nicht ungeschützt zwischen nebenläufigen Ausführungskontexten geteilt werden. Frage (offen)

Fehlerszenarien

Fehlersituationen im Umgang mit ara::per::ReadWriteAccessor manifestieren sich sowohl zur Übersetzungszeit als auch zur Laufzeit durch spezifische Vor- und Nachbedingungen. Eine wesentliche statische Vorbedingung ist das Verbot der Standardinstanziierung: Da der parameterlose Konstruktor gelöscht ist, führt jeder Versuch einer direkten Konstruktion zu einem sofortigen Übersetzungsfehler [SWS_PER_00462]. Hierdurch wird verhindert, dass uninitialisierte oder ungültige Accessor-Objekte im System existieren.

Hinsichtlich des Ausnahmeniveaus bietet die Klasse beim Abbau eine garantierte Ausnahme-Sicherheit: Der Destruktor ist als noexcept definiert und als ausnahmesicher („exception safe“) spezifiziert [SWS_PER_00598]. Dies stellt sicher, dass selbst bei Fehlern während der Aufräumarbeiten keine C++-Ausnahmen nach außen propagiert werden, wodurch ein sicheres Stack-Unwinding gewährleistet bleibt.

Ein kritisches Fehlerszenario zur Laufzeit resultiert aus der fehlenden Threadsicherheit des Destruktors gemäß [SWS_PER_00598]. Wird das Objekt zerstört, während ein anderer Thread noch Lese- oder Schreiboperationen ausführt, führt dies zu undefiniertem Verhalten oder Dateninkonsistenzen. Die Einhaltung der threadbezogenen Vorbedingungen obliegt daher vollständig dem aufrufenden Systementwurf.

Dieser Klassen-Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive Platform R25-11 für das Modul Persistency (per).

UML-Klassendiagramm

Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.

G nara__per__ReadWriteAccessor483 ReadWriteAccessor + ReadWriteAccessor() + ~ReadWriteAccessor() nara__per__ReadAccessor956 ReadAccessor nara__per__ReadWriteAccessor483->nara__per__ReadAccessor956 nara__per__WriteAccessor940 WriteAccessor nara__per__ReadWriteAccessor483->nara__per__WriteAccessor940 nara__per__FileAccessor932 FileAccessor nara__per__ReadAccessor956->nara__per__FileAccessor932 nara__per__WriteAccessor940->nara__per__FileAccessor932

Konstruktoren und Destruktor

The default constructor for ReadWriteAccessor shall not be used.

ReadWriteAccessor ()=delete;

Destructor for ReadWriteAccessor.

~ReadWriteAccessor () final noexcept;

Dokumentation der Methoden

function ReadWriteAccessor [SWS_PER_00462] Upstream: RS_PER_00004, RS_AP_00120, RS_AP_00129, RS_AP_00146

ReadWriteAccessor ()=delete;

The default constructor for ReadWriteAccessor shall not be used.

Header-Datei#include "ara/per/read_write_accessor.h"
Scopeclass ara::per::ReadWriteAccessor

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_PER_00462
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_PER_00462@rel:R25-11#72176429
Content hash
72176429
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Persistency.pdf#nameddest=SWS_PER_00462
Status: valid/unmigrated Version: rel:R25-11#cfd162d3 Versionshistorie & Revisions (1 transition, 6 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_PER_00462@rel:R25-11#cfd162d3
Point-in-Time History:
Recorded Revisions (6):
  • R25-11rel:R25-11#721764292026-09-30
  • R21-11rel:R21-11#cd9652062026-10-14
  • R22-11rel:R22-11#77262b5e2026-10-14
  • R23-11rel:R23-11#5e7c323f2026-10-14
  • R24-11rel:R24-11#d4da2a372026-10-14
  • R25-11rel:R25-11#cfd162d32026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

function ~ReadWriteAccessor [SWS_PER_00598] Upstream: RS_PER_00004, RS_AP_00120, RS_AP_00129, RS_AP_00134, RS_AP_00145, RS_AP_00159

~ReadWriteAccessor () final noexcept;

Destructor for ReadWriteAccessor.

Header-Datei#include "ara/per/read_write_accessor.h"
Scopeclass ara::per::ReadWriteAccessor
Exception-Sicherheitexception safe
Thread-Sicherheitnot thread-safe

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_PER_00598
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_PER_00598@rel:R25-11#3b19c355
Content hash
3b19c355
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Persistency.pdf#nameddest=SWS_PER_00598
Status: valid/unmigrated Version: rel:R25-11#3b19c355 Versionshistorie & Revisions (1 transition)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_PER_00598@rel:R25-11#3b19c355
Point-in-Time History:
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill