class WriteAccessor final : public virtual FileAccessor {...};
WriteAccessor is used to write file data. It provides the WriteBinary and WriteText methods featuring a Result for controlled, unformatted writing, and the operator<< method for simple formatted writing. It also provides SyncToFile() to flush the buffer of the operating system to the physical storage.
Dient dem gepufferten Schreiben von Binär- und Textdateien sowie deren Synchronisation auf den physischen Speicher.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: fd57dd10b948HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Dient dem gepufferten Schreiben von Binär- und Textdateien sowie deren Synchronisation auf den physischen Speicher.
Die Klasse ara::per::WriteAccessor ermöglicht das Schreiben binärer oder textueller Dateiinhalte im Persistenzmodul und stellt Methoden für unformatierte Schreibzugriffe sowie einen formatierten Stream-Operator bereit [SWS_PER_00423]. Da Schreibvorgänge zunächst im Betriebssystem gepuffert werden können, erzwingt der Aufruf von SyncToFile() das dauerhafte Flashen auf den physischen Speicher [SWS_PER_00122]. Sämtliche Methoden sind ausnahmesicher, jedoch nicht threadsicher, weshalb nebenläufige Zugriffe durch die Anwendung geschützt werden müssen.
Kontext
ara::per::WriteAccessor ist eine finale Klasse des Persistenzmoduls (per) der AUTOSAR Adaptive Platform und leitet virtuell von FileAccessor ab. Die Klasse stellt Schreiboperationen für Dateiinhalte bereit. Sie bietet Methoden für unformatiertes, kontrolliertes Schreiben mit Fehlerbehandlung über ara::core::Result sowie einen überladenen Stream-Operator für formatiertes Schreiben. Als Interaktionspartner fungieren die aufrufende Anwendung, der interne Dateipuffer des Betriebssystems sowie das physische Speichermedium.
Lebenszyklus
Der Standardkonstruktor von WriteAccessor ist explizit gelöscht und darf nicht verwendet werden [SWS_PER_00596]. (Interpretation: Instanzen von WriteAccessor dürften über Fabrikmethoden übergeordneter Persistenz-Verwaltungseinheiten wie dem File-Storage erzeugt und bereitgestellt werden.) Frage Q-af92be8494274611 (offen)
Die Zerstörung erfolgt über den virtuellen Destruktor ~WriteAccessor()[SWS_PER_00597]. Die Klasse und ihre Methoden sind als ausnahmesicher („exception safe“) spezifiziert und als noexcept deklariert. Bezüglich der Nebenläufigkeit ist WriteAccessor nicht threadsicher („not thread-safe“) [SWS_PER_00597]; parallele Zugriffe auf dieselbe Instanz müssen von der Anwendung extern abgesichert werden.
Nutzungspfad
Der reguläre Ablauf umfasst das Schreiben von Daten in unformatiertem oder formatiertem Modus, das optionale Anpassen der Dateigröße und die abschließende persistente Speicherung:
Binärdaten schreiben: Über WriteBinary() wird ein Byte-Bereich (ara::core::Span<const ara::core::Byte>) in die Datei geschrieben [SWS_PER_00423].
Textdaten schreiben: Mittels WriteText() werden Zeichenketten über einen ara::core::StringView übergeben [SWS_PER_00166]. Ergänzend steht operator<< als Komfortfunktion für unkritische Anwendungsfälle zur Verfügung, wobei auftretende Fehler stillschweigend ignoriert werden [SWS_PER_00125].
Persistierung erzwingen: Der Zeitpunkt der physischen Speicherung hängt von der Persistenz-Implementierung ab; SyncToFile() flasht den Puffer des Betriebssystems verbindlich auf das Speichermedium [SWS_PER_00122], [SWS_PER_00423], [SWS_PER_00166].
Dateigröße anpassen: Mit SetFileSize() kann die Datei verkürzt werden, wodurch überstehende Inhalte entfernt werden; die Dateiposition bleibt unverändert oder wird auf die letzte gültige Position bzw. 0 gesetzt [SWS_PER_00428].
Die Methoden WriteBinary(), WriteText(), SyncToFile() und SetFileSize() geben ein ara::core::Result<void> zurück, das bei Fehlschlägen spezifische Fehlercodes enthält:
PerErrc::kPhysicalStorageFailure: Zugriff auf das physische Speichermedium schlägt fehl [SWS_PER_00423], [SWS_PER_00166], [SWS_PER_00122], [SWS_PER_00428]. Der Zustand der Datei ist unbekannt und kann komplett zerstört sein (keine Rollback-Semantik).
PerErrc::kOutOfStorageSpace: Unzureichender physischer Speicherplatz [SWS_PER_00423], [SWS_PER_00166], [SWS_PER_00122]. Beim Schreiben wird der überschreitende Anteil verworfen und die Position steht am Dateiende (keine Rollback-Semantik).
PerErrc::kEncryptionFailed: Ver- oder Entschlüsselung schlägt fehl [SWS_PER_00423], [SWS_PER_00166], [SWS_PER_00122], [SWS_PER_00428]. Puffer und Position werden zwar aktualisiert, die Datei kann aber nicht persistiert werden und spiegelt auf dem Speicher eine ältere Version wider (Rollback-Semantik).
Reduces the size of the file to ’size’, effectively removing the current content of the file beyond this size. The current file position is unchanged if it is lower than ’size’, or set to the last valid position in the file otherwise. If ’size’ is 0, the current file position will also be set to 0.
Writes the content of a Span of Byte to the file. The time when the content is persisted depends on the implementation of Persistency. SyncTo File can be used to force Persistency to persist the file content. In case of an error, the file content might be corrupted, and the current position might or might not have changed. The expected state of the file for each supported error can be expected to be as follows: • kPhysicalStorageFailure: The state of the file is unknown. It could have been entirely destroyed. • kEncryptionFailed: The content of the file and the current position will have been updated, but could not be persisted. The persisted file will reflect an older version of the file. • kOutOfStorageSpace: The content of the file will have been updated, but the part of the operation that exceeded the quota will have been discarded. The current position will be at the end of the file.
Writes the content of a StringView to the file. The time when the content is persisted depends on the implementation of Persistency. SyncTo File can be used to force Persistency to persist the file content. In case of an error, the file content might be corrupted, and the current position might or might not have changed. The expected state of the file for each supported error can be expected to be as follows: • kPhysicalStorageFailure: The state of the file is unknown. It could have been entirely destroyed. • kEncryptionFailed: The content of the file and the current position will have been updated, but could not be persisted. The persisted file will reflect an older version of the file. • kOutOfStorageSpace: The content of the file will have been updated, but the part of the operation that exceeded the quota will have been discarded. The current position will be at the end of the file.
Writes the content of a StringView to the file. This operator is just a comfort feature for non-safety critical Persistency users. If an error occurs during this operation, it is silently ignored.
Reduces the size of the file to ’size’, effectively removing the current content of the file beyond this size. The current file position is unchanged if it is lower than ’size’, or set to the last valid position in the file otherwise. If ’size’ is 0, the current file position will also be set to 0.
Flushes the current file content to the physical storage.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: c625990570f3HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Memberfunktion SyncToFile der Klasse ara::per::WriteAccessor (definiert in #include "ara/per/write_accessor.h") überträgt den aktuellen Dateiinhalt synchron auf den physischen Speicher [SWS_PER_00122]. Der Aufruf nimmt keine Übergabeparameter entgegen und gibt ein ara::core::Result<void> zurück, das im Erfolgsfall leer ist oder im Fehlerfall spezifische Fehlercodes des Persistency-Moduls bzw. herstellerspezifische Fehler enthält [SWS_PER_00122].
Bei der Durchführung können unterschiedliche Fehlerfälle auftreten, die teilweise Rollback-Semantik besitzen [SWS_PER_00122]:
StorageFailure: Tritt auf, wenn der physische Zugriff auf das Speichermedium fehlschlägt (keine Rollback-Semantik) [SWS_PER_00122].
PerErrc::kOutOfStorageSpace: Wird zurückgegeben, falls der physische Speicherplatz für die geänderte Datei unzureichend ist (keine Rollback-Semantik) [SWS_PER_00122].
PerErrc::kQuotaExceeded: Wird gemeldet, wenn die Datei die konfigurierte Maximalgröße AllowedSize des File Storage überschreitet (mit Rollback-Semantik) [SWS_PER_00122].
PerErrc::kEncryptionFailed: Scheitert die Verschlüsselung der gespeicherten Daten (mit Rollback-Semantik) [SWS_PER_00122].
PerErrc::kAuthenticationFailed: Schlägt die Berechnung des MAC für die Daten fehl (mit Rollback-Semantik) [SWS_PER_00122].
Hinsichtlich der Ausführungssicherheit ist die Methode als noexcept deklariert und als exception safe spezifiziert [SWS_PER_00122]. Da sie jedoch ausdrücklich als not thread-safe eingestuft ist, müssen gleichzeitige Aufrufe auf derselben WriteAccessor-Instanz vermutlich durch den Aufrufer synchronisiert werden [SWS_PER_00122]. Frage Q-e4b139f136cdcd31 (offen)
Dieser Nutzungshinweis wurde automatisiert auf Basis der Spezifikation AUTOSAR R25-11 generiert.
Writes the content of a Span of Byte to the file. The time when the content is persisted depends on the implementation of Persistency. SyncTo File can be used to force Persistency to persist the file content. In case of an error, the file content might be corrupted, and the current position might or might not have changed. The expected state of the file for each supported error can be expected to be as follows: • kPhysicalStorageFailure: The state of the file is unknown. It could have been entirely destroyed. • kEncryptionFailed: The content of the file and the current position will have been updated, but could not be persisted. The persisted file will reflect an older version of the file. • kOutOfStorageSpace: The content of the file will have been updated, but the part of the operation that exceeded the quota will have been discarded. The current position will be at the end of the file.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 65db1acb87c9Herkunft
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Die Funktion WriteBinary der Klasse ara::per::WriteAccessor schreibt den Inhalt einer Byte-Sequenz (ara::core::Span<const ara::core::Byte>) in eine Datei [SWS_PER_00423]. Der Zeitpunkt der tatsächlichen Persistierung auf dem Speichermedium hängt von der Implementierung von Persistency ab; über SyncToFile kann das synchrone Persistieren forciert werden [SWS_PER_00423]. Die Funktion ist als noexcept deklariert und gilt als ausnahmesicher [SWS_PER_00423].
In Bezug auf Nebenläufigkeit ist WriteBinary als nicht threadsicher (not thread-safe) spezifiziert [SWS_PER_00423]. Parallele Zugriffe auf denselben Accessor müssen auf Anwendungsebene synchronisiert werden.
Im Fehlerfall wird ein Fehlercode in ara::core::Result<void> zurückgegeben, wobei der Dateiinhalt beschädigt sein und sich die aktuelle Position verändert haben kann [SWS_PER_00423]:
PerErrc::kPhysicalStorageFailure: Zustand der Datei ist unbekannt und kann vollständig zerstört sein (keine Rollback-Semantik) [SWS_PER_00423].
PerErrc::kOutOfStorageSpace: Unzureichender physischer Speicher; über die Quote hinausgehende Daten werden verworfen und die Dateiposition steht am Ende [SWS_PER_00423].
PerErrc::kQuotaExceeded: Der Schreibvorgang würde die konfigurierte Maximalgröße AllowedSize überschreiten [SWS_PER_00423].
PerErrc::kEncryptionFailed: Verschlüsselung schlägt fehl; Dateiinhalt und Position werden aktualisiert, aber nicht persistiert (persistierte Datei behält Vorversion) [SWS_PER_00423].
PerErrc::kAuthenticationFailed bzw. PerErrc::kValidationFailed: MAC-Berechnung/-Prüfung schlägt fehl oder die Validität gespeicherter Daten ist nicht gewährleistet [SWS_PER_00423].
Dieser Nutzungshinweis wurde automatisiert auf Basis von Spezifikationselement [SWS_PER_00423] generiert.
Writes the content of a StringView to the file. The time when the content is persisted depends on the implementation of Persistency. SyncTo File can be used to force Persistency to persist the file content. In case of an error, the file content might be corrupted, and the current position might or might not have changed. The expected state of the file for each supported error can be expected to be as follows: • kPhysicalStorageFailure: The state of the file is unknown. It could have been entirely destroyed. • kEncryptionFailed: The content of the file and the current position will have been updated, but could not be persisted. The persisted file will reflect an older version of the file. • kOutOfStorageSpace: The content of the file will have been updated, but the part of the operation that exceeded the quota will have been discarded. The current position will be at the end of the file.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: f24ce7c436f3HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die synchrone Methode WriteText der Schnittstelle ara::per::WriteAccessor schreibt den Inhalt eines ara::core::StringView in die geöffnete Datei [SWS_PER_00166]. Die Funktion ist als ausnahmesicher (exception safe) spezifiziert und deklariert kein Werfen von C++-Ausnahmen (noexcept) [SWS_PER_00166]. Der exakte Zeitpunkt der physischen Speicherung hängt von der Persistency-Implementierung ab; eine unmittelbare Sicherung auf das Speichermedium kann über SyncToFile forciert werden [SWS_PER_00166].
Fehlerbehandlung
Als Rückgabewert dient ein ara::core::Result<void>, das im Fehlerfall Fehlercodes aus PerErrc oder herstellerspezifische Fehler meldet [SWS_PER_00166]. Schlägt die Operation fehl, kann der Dateiinhalt beschädigt sein und die Schreibposition verändert worden sein [SWS_PER_00166]:
PerErrc::kPhysicalStorageFailure: Physischer Speicherzugriff fehlgeschlagen; der Dateizustand ist unbekannt oder die Datei zerstört [SWS_PER_00166].
PerErrc::kEncryptionFailed: Verschlüsselung schlägt fehl; Dateiinhalt und Position im Speicher werden aktualisiert, können aber nicht persistiert werden, wodurch ein älterer persistierter Stand verbleibt [SWS_PER_00166].
PerErrc::kOutOfStorageSpace: Unzureichender physischer Speicherplatz; Daten über die Quote hinaus werden verworfen und die Position liegt am Dateiende [SWS_PER_00166].
PerErrc::kQuotaExceeded, PerErrc::kValidationFailed und PerErrc::kAuthenticationFailed: Melden Quotenüberschreitungen (AllowedSize) sowie Validierungs- oder Authentifizierungsfehler unter Wahrung von Rollback-Semantik [SWS_PER_00166].
Nebenläufigkeit und Einschränkungen
Die Operation ist als nicht threadsicher (not thread-safe) eingestuft [SWS_PER_00166]. Bei parallelen Zugriffen auf dieselbe Instanz von WriteAccessor müssen Aufrufer die Aufrufe vermutlich eigenständig synchronisieren. Frage Q-73a6dbdb7d3df643 (offen)
Dieser Nutzungshinweis basiert auf der Spezifikation AUTOSAR Adaptive Platform R25-11.
Writes the content of a StringView to the file. This operator is just a comfort feature for non-safety critical Persistency users. If an error occurs during this operation, it is silently ignored.
gemini-3.8-flash-medium· 2026-10-13