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

用户指南人工智能生成

允许通过通用访问接口组合读取和写入文件数据。
AI 生成 未审核 模型: 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 是 AUTOSAR Adaptive Platform 的模块 per(Persistency)中用于读取和写入文件数据的核心接口。它通过汇集基类 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;)。因此,不允许在没有上下文或参数的情况下直接创建。从架构角度来看(Interpretation),一旦打开文件进行组合读写操作,该类的实例通常可能由 Persistency 子系统的上层管理函数或创建机制提供。 问题 Q-9b390ab33102d524 (未决)

实例的释放通过析构函数 ~ReadWriteAccessor() 进行,该析构函数声明为 final 和 noexcept [SWS_PER_00598]。结束对象生命周期在并发性方面需要特别注意:析构函数在规范中被明确归类为非线程安全(“not thread-safe”)[SWS_PER_00598]。因此,调用方软件必须确保在销毁对象期间,同一实例上没有并发的读写操作发生。根据 Interpretation,在有序退出作用域时,析构函数可能负责关闭打开的文件描述符并清理剩余的内部状态。 问题 Q-49e2fdfd53789afd (未决)

在所有权关系方面,该对象通常位于使用方组件的局部作用域内,或通过指针结构进行管理。由于并发修改和销毁未受保护,(Interpretation)实例 vermutlich 不得在并发执行上下文之间未经保护地共享。 问题 (未决)

错误场景

使用 ara::per::ReadWriteAccessor 时的错误情况在编译时和运行时均通过特定的前置条件和后置条件表现出来。一项关键的静态前置条件是禁止默认实例化:由于无参构造函数已被删除,任何直接构造的尝试都会导致立即出现编译错误 [SWS_PER_00462]。这可以防止系统中存在未初始化或无效的 Accessor 对象。

在异常级别方面,该类在析构时提供了有保证的异常安全性:析构函数被定义为 noexcept 并被规范为异常安全(“exception safe”)[SWS_PER_00598]。这确保了即使在清理工作期间发生错误,也不会向外传播 C++ 异常,从而保证了安全的栈展开。

运行时的关键错误场景源自根据 [SWS_PER_00598] 析构函数缺乏线程安全性。如果在另一个线程仍在执行读写操作时销毁对象,将导致未定义行为或数据不一致。因此,遵守与线程相关的前置条件完全取决于调用方系统设计。

本类指南基于 Persistency(per)模块的 AUTOSAR Adaptive Platform R25-11 规范。

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

构造函数和析构函数

The default constructor for ReadWriteAccessor shall not be used.

ReadWriteAccessor ()=delete;

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#a27f4cf0
Content hash
a27f4cf0
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#13958cff
Content hash
13958cff
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