DEENESPTFRRUARHIKOZHNL

класс 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

Руководство пользователяСОЗДАНО ИИ

Обеспечивает комбинированное чтение и запись файловых данных через общий интерфейс доступа.
СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 6c41c48fc5a7 Происхождение Открытые вопросы (3)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Обеспечивает комбинированное чтение и запись файловых данных через общий интерфейс доступа.

Класс ara::per::ReadWriteAccessor комбинирует интерфейсы ReadAccessor и WriteAccessor, позволяя читать и записывать файловые данные в AUTOSAR Adaptive Platform через общий объект. Прямое инстанцирование через конструктор по умолчанию недопустимо, так как он явно удален [SWS_PER_00462]. При уничтожении экземпляра деструктор, объявленный как noexcept, гарантирует полную безопасность исключений, однако явно специфицирован как непотокобезопасный и поэтому требует синхронизированного доступа [SWS_PER_00598].

Контекст

Класс ara::per::ReadWriteAccessor представляет собой центральный интерфейс в модуле per (Persistency) платформы AUTOSAR Adaptive Platform для чтения и записи файловых данных. Он объединяет функциональные возможности раздельного доступа на чтение и запись, сводя воедино возможности базовых классов ReadAccessor и WriteAccessor. Объявление класса осуществляется через заголовочный файл ara/per/read_write_accessor.h [SWS_PER_00462].

В типовой архитектуре ReadWriteAccessor определен посредством множественного наследования как подкласс ReadAccessor и WriteAccessor и помечен спецификатором final. Это предотвращает дальнейшее наследование разработчиками приложений и гарантирует сохранение неизменной семантики комбинированного доступа. Следовательно, в качестве партнеров по взаимодействию выступают оба специализированных базовых класса, чьи общие контракты интерфейсов проецируются на унифицированный уровень доступа к файлам.

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

Контекстная диаграмма: иерархия наследования и ролевые отношения между ReadWriteAccessor, ReadAccessor и WriteAccessor. Источники: [SWS_PER_00462], [SWS_PER_00598]

Жизненный цикл

Жизненный цикл экземпляра ara::per::ReadWriteAccessor подчиняется строгим структурным требованиям. В соответствии с [SWS_PER_00462] конструктор по умолчанию без параметров явно удален (ReadWriteAccessor() = delete;). Поэтому прямое создание без контекста или параметров недопустимо. С архитектурной точки зрения (интерпретация), экземпляры этого класса, как правило, предоставляются вышестоящими функциями управления или механизмами создания подсистемы персистентности, как только файл открывается для комбинированного режима чтения и записи. Вопрос Q-9b390ab33102d524 (открытый)

Освобождение экземпляра происходит через деструктор ~ReadWriteAccessor(), который объявлен как final и noexcept [SWS_PER_00598]. Завершение жизненного цикла объекта требует особого внимания с точки зрения параллелизма: в спецификации деструктор явно классифицирован как непотокобезопасный («not thread-safe») [SWS_PER_00598]. Таким образом, вызывающее программное обеспечение должно гарантировать, что во время уничтожения объекта не происходят параллельные операции чтения или записи над тем же экземпляром. Согласно интерпретации, деструктор при штатном выходе из области видимости, вероятно, отвечает за закрытие открытых файловых дескрипторов, а также очистку оставшихся внутренних состояний. Вопрос Q-49e2fdfd53789afd (открытый)

Что касается владения, объект обычно находится в локальной области видимости использующего компонента или управляется через структуры указателей. Поскольку одновременная модификация и уничтожение не защищены, экземпляр (интерпретация), вероятно, не должен разделяться между параллельными контекстами выполнения без защиты. Вопрос (открытый)

Сценарии ошибок

Ошибочные ситуации при обращении с ara::per::ReadWriteAccessor проявляются как на этапе компиляции, так и во время выполнения через определенные предусловия и постусловия. Важным статическим предусловием является запрет инстанцирования по умолчанию: поскольку конструктор без параметров удален, любая попытка прямого конструирования приводит к немедленной ошибке компиляции [SWS_PER_00462]. За счет этого предотвращается существование неинициализированных или недействительных объектов аксессоров в системе.

Относительно уровня безопасности исключений класс обеспечивает гарантированную безопасность исключений при освобождении: деструктор определен как noexcept и специфицирован как безопасный к исключениям («exception safe») [SWS_PER_00598]. Это гарантирует, что даже при ошибках во время операций очистки исключения C++ не будут распространяться наружу, благодаря чему обеспечивается безопасная размотка стека.

Критический сценарий ошибки во время выполнения возникает из-за отсутствия потокобезопасности деструктора согласно [SWS_PER_00598]. Если объект уничтожается в то время, когда другой поток все еще выполняет операции чтения или записи, это приводит к неопределенному поведению или несогласованности данных. Поэтому соблюдение связанных с потоками предусловий целиком возлагается на архитектуру вызывающей системы.

Данное руководство по классу основано на спецификации AUTOSAR Adaptive Platform R25-11 для модуля Persistency (per).

UML-диаграмма классов

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

Конструкторы и деструктор

ReadWriteAccessor функция

The default constructor for ReadWriteAccessor shall not be used.

ReadWriteAccessor ()=delete;
~ReadWriteAccessor функция

Destructor for ReadWriteAccessor.

~ReadWriteAccessor () final noexcept;

Документация методов

функция 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#63083e8f
Content hash
63083e8f
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

функция ~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#f0b4017e
Content hash
f0b4017e
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