DEENESPTFRRUARHIKOZHNL

classe 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

Guia do utilizadorGERADO POR IA

Permite a leitura e a escrita combinadas de dados de arquivo por meio de uma interface de acesso compartilhada.
GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 6c41c48fc5a7 Procedência Perguntas em aberto (3)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Permite a leitura e a escrita combinadas de dados de arquivo por meio de uma interface de acesso compartilhada.

A classe ara::per::ReadWriteAccessor combina as interfaces de ReadAccessor e WriteAccessor para permitir a leitura e a escrita de dados de arquivo na AUTOSAR Adaptive Platform por meio de um objeto compartilhado. A instanciação direta por meio do construtor padrão não é permitida, pois este foi explicitamente excluído [SWS_PER_00462]. Ao destruir a instância, o destrutor declarado como noexcept garante total segurança contra exceções, mas é expressamente especificado como não sendo thread-safe, exigindo, portanto, acesso sincronizado [SWS_PER_00598].

Contexto

A classe ara::per::ReadWriteAccessor representa, no módulo per (Persistency) da AUTOSAR Adaptive Platform, a interface central para ler bem como escrever dados de arquivo. Ela reúne as funcionalidades de acesso separado de leitura e de escrita ao combinar os recursos das classes base ReadAccessor e WriteAccessor. A declaração da classe é feita por meio do arquivo de cabeçalho ara/per/read_write_accessor.h [SWS_PER_00462].

Na arquitetura de tipos, ReadWriteAccessor é definida via herança múltipla como subclasse de ReadAccessor bem como de WriteAccessor e marcada com o identificador final. Isso impede derivações posteriores por parte de desenvolvedores de aplicação e garante que a semântica combinada de acesso permaneça inalterada. Como parceiras de interação atuam, consequentemente, as duas classes base especializadas, cujos contratos de interface compartilhados são projetados em uma camada unificada de acesso para arquivos.

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

Diagrama de contexto: Hierarquia de herança e relação de papéis entre ReadWriteAccessor, ReadAccessor e WriteAccessor. Fontes: [SWS_PER_00462], [SWS_PER_00598]

Ciclo de vida

O ciclo de vida de uma instância de ara::per::ReadWriteAccessor está sujeito a diretrizes estruturais rigorosas. Conforme [SWS_PER_00462], o construtor padrão sem parâmetros foi explicitamente excluído (ReadWriteAccessor() = delete;). Uma criação direta sem contexto ou parâmetros é, portanto, inadmissível. Do ponto de vista arquitetural (interpretação), instâncias desta classe devem ser tipicamente fornecidas por funções de gerenciamento superiores ou mecanismos de criação do subsistema de Persistency, assim que um arquivo for aberto para operação combinada de leitura e escrita. Pergunta Q-9b390ab33102d524 (aberta)

A liberação da instância ocorre por meio do destrutor ~ReadWriteAccessor(), que está declarado como final e noexcept [SWS_PER_00598]. O término do ciclo de vida do objeto requer atenção especial quanto à concorrência: o destrutor é classificado explicitamente na especificação como não thread-safe ("not thread-safe") [SWS_PER_00598]. O software chamador deve, portanto, garantir que, durante a destruição do objeto, não ocorram operações concorrentes de leitura ou escrita na mesma instância. Conforme a interpretação, o destrutor deve ser responsável por fechar descritores de arquivo abertos e limpar estados internos remanescentes durante a saída ordenada do escopo. Pergunta Q-49e2fdfd53789afd (aberta)

Quanto à relação de posse, o objeto reside tipicamente no escopo local do componente usuário ou é gerenciado por meio de estruturas de ponteiros. Como uma modificação e destruição simultâneas não estão protegidas, uma instância (interpretação) provavelmente não deve ser compartilhada desprotegida entre contextos de execução concorrentes. Pergunta (aberta)

Cenários de erro

Situações de erro no manuseio de ara::per::ReadWriteAccessor manifestam-se tanto em tempo de compilação quanto em tempo de execução por meio de pré e pós-condições específicas. Uma pré-condição estática essencial é a proibição da instanciação padrão: como o construtor sem parâmetros foi excluído, qualquer tentativa de construção direta resulta em um erro imediato de compilação [SWS_PER_00462]. Isso impede que existam no sistema objetos acessores não inicializados ou inválidos.

Quanto ao nível de exceção, a classe oferece segurança de exceção garantida durante a desmontagem: o destrutor é definido como noexcept e especificado como seguro contra exceções ("exception safe") [SWS_PER_00598]. Isso garante que, mesmo diante de erros durante os trabalhos de limpeza, nenhuma exceção C++ seja propagada para o exterior, assegurando assim um stack unwinding seguro.

Um cenário crítico de erro em tempo de execução resulta da ausência de thread safety do destrutor de acordo com [SWS_PER_00598]. Se o objeto for destruído enquanto outra thread ainda estiver executando operações de leitura ou escrita, isso causará comportamento indefinido ou inconsistências de dados. O cumprimento das pré-condições relativas a threads cabe, portanto, integralmente ao projeto do sistema chamador.

Este guia de classe baseia-se na especificação AUTOSAR Adaptive Platform R25-11 para o módulo Persistency (per).

Diagrama de classes 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

Construtores e destrutor

The default constructor for ReadWriteAccessor shall not be used.

ReadWriteAccessor ()=delete;

Destructor for ReadWriteAccessor.

~ReadWriteAccessor () final noexcept;

Documentação dos métodos

função 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#e38988ad
Content hash
e38988ad
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

função ~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#7963a511
Content hash
7963a511
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