DEENESPTFRRUARHIKOZHNL

módulo ara::per — Persistency

Spezifikation: AUTOSAR_AP_SWS_Persistency.pdf (R25-11) · 140 API-Records

Guia do móduloGERADO POR IA

Protege pares chave-valor estruturados e ficheiros de forma persistente, transacional e com abstração de hardware.
GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 5a09fccb0066 Procedência Perguntas em aberto (1)
Âncora causal: R25-11 Válido a partir de R25-11 Sintetizado para esta versão de especificação.
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Protege pares chave-valor estruturados e ficheiros de forma persistente, transacional e com abstração de hardware.

O módulo da Adaptive Persistency (ara::per) fornece uma camada de abstração independente de hardware para o armazenamento não volátil de dados, que abrange tanto o armazenamento chave-valor estruturado (KeyValueStorage) como o acesso baseado em ficheiros (FileStorage) (EXP_SWArchitecture p. 43). As modificações em pares chave-valor estão sujeitas a um buffering em memória e requerem uma chamada de sincronização explícita (SyncToStorage) para serem gravadas de forma permanente ([SWS_PER_00049]). Além de mecanismos de integridade e recuperação de dados, o módulo também regula processos de atualização e migração em atualizações de software ([SWS_PER_00357]).

O cluster funcional Persistency (ara::per) fornece para a AUTOSAR Adaptive Platform uma camada de abstração padronizada para o armazenamento não volátil de dados (EXP_SWArchitecture p. 43). Disponibiliza dois modelos de acesso fundamentais: o armazenamento baseado em chave KeyValueStorage para parâmetros estruturados, bem como o armazenamento baseado em ficheiros FileStorage para fluxos de dados de carga útil não estruturados (SWS_Persistency p. 219). Tanto as Adaptive Applications como os daemons centrais da plataforma, tais como State Management, Diagnostic Management ou Update and Configuration Management, utilizam estas interfaces para guardar os seus estados de forma persistente e independente dos controladores físicos de sistema de ficheiros ou flash (EXP_SWArchitecture p. 93).

PerArchContext cluster_apps Konsumenten cluster_per ara::per (Persistency Cluster) cluster_platform Plattformdienste & Basis AA Adaptive Application KVS KeyValueStorage (PortInterface) AA->KVS FS FileStorage (PortInterface) AA->FS LIFE Installation & Update (NativeInterface) AA->LIFE REC Recovery & Diagnostics (NativeInterface) AA->REC SM State Management SM->KVS DM Diagnostic Management DM->KVS DM->FS VUCM Update & Configuration Mgmt VUCM->KVS VUCM->FS RP Remote Persistency RP->KVS CRYPTO Cryptography (ara::crypto) KVS->CRYPTO OS Operating System (POSIX VFS / NVRAM) KVS->OS FS->OS

Diagrama de contexto: integração do cluster Persistency na Adaptive Platform com consumidores de aplicações e da plataforma, bem como o sistema operativo subjacente. Fontes: EXP_SWArchitecture p. 93, EXP_SWArchitecture p. 43.

As operações de escrita em KeyValueStorage seguem uma semântica transacional estrita em memória ([SWS_PER_00046]). As modificações em pares chave-valor permanecem inicialmente em buffer volátil e só são gravadas de forma permanente no suporte de armazenamento através da chamada síncrona SyncToStorage ([SWS_PER_00049]), enquanto DiscardPendingChanges descarta os estados não gravados ([SWS_PER_00365]). Em FileStorage, o acesso é efetuado através de acessores tipificados especializados (ReadAccessor, WriteAccessor, ReadWriteAccessor), que são geridos exclusivamente através de UniqueHandle ([SWS_PER_00113], [SWS_PER_00114], [SWS_PER_00115]).

Armazenamento transacional de chave-valor e flush físicoAdaptive Applicationara::per (KeyValueStorage)Betriebssystem / NVRAMSetValue(key, value)Armazenar valor em buffer na RAM (estado transacional)Result<void> (Erfolg)altCommit-Pfad (Dauerhaftes Sichern)SyncToStorage()Calcular CRC / redundância & encriptação opcionalwrite() / fsync()Status OKResult<void> (Persistiert)Caminho de rollback (descarte de alterações não guardadas)DiscardPendingChanges()Descartar alterações voláteis na RAMResult<void> (Reposto)

Diagrama de sequência: sequência de escrita e sincronização de um armazenamento chave-valor com buffering em memória e flush físico. Fontes: [SWS_PER_00046], [SWS_PER_00049], [SWS_PER_00365], EXP_SWArchitecture p. 230.

Além disso, o módulo integra mecanismos abrangentes para o ciclo de vida e tolerância a falhas: as mudanças de configuração durante o tempo de execução são processadas através de CheckForManifestUpdate e ReloadPersistencyManifest ([SWS_PER_00576], [SWS_PER_00577]), enquanto as migrações de dados específicas da aplicação são realizadas através de callbacks de atualização ([SWS_PER_00356], [SWS_PER_00357]). Se as verificações de redundância ou integridade baseadas em manifesto falharem, os callbacks informam sobre o estado de corrupção ([SWS_PER_00433]), após o que os dados corrompidos podem ser reparados mediante RecoverKeyValueStorage, RecoverFile ou através de operações de reposição ([SWS_PER_00333], [SWS_PER_00337], [SWS_PER_00334]).

Limites do sistema e integração da arquitetura de ara::per

O cluster funcional Persistency (ara::per) fornece mecanismos de abstração padronizados para o armazenamento não volátil de dados na AUTOSAR Adaptive Platform (EXP_SWArchitecture p. 43). Desacopla tanto as aplicações definidas pelo utilizador como os serviços funcionais da plataforma de sistemas de ficheiros específicos do sistema operativo, estruturas de partições e controladores de flash ou NVRAM (EXP_SWArchitecture p. 93). O fornecimento abrange dois paradigmas primários de armazenamento distintos: o acesso a dados baseado em chaves através de KeyValueStorage e o armazenamento hierárquico de ficheiros através de FileStorage (SWS_Persistency p. 219). Serviços da plataforma como Diagnostic Management (EXP_SWArchitecture p. 176), State Management (EXP_SWArchitecture p. 55), Update and Configuration Management (SWS_UpdateAndConfigurationManagement p. 18) e Remote Persistency (SWS_RemotePersistency p. 9) utilizam estas interfaces como interfaces de porta padronizadas ([SWS_PER_00052], [SWS_PER_00116]).

Além de fornecer abstrações de armazenamento local, ara::per integra primitivas criptográficas e verificações de redundância diretamente na interface com o sistema operativo anfitrião (EXP_SWArchitecture p. 230). A configuração funcional de um armazenamento de persistência é modelada declarativamente no manifesto AUTOSAR e vincula especificações de quotas, hashes de integridade, procedimentos CRC e caminhos de encriptação criptográfica a instâncias concretas (SWS_Persistency p. 104). Componentes de biblioteca de outros clusters funcionais integram a persistência diretamente através de configurações de destino próprias, enquanto processos de daemon acedem a unidades de armazenamento através de especificadores de instância, de forma semelhante a aplicações regulares (SWS_Persistency p. 35).

PerArchContext cluster_apps Konsumenten cluster_per ara::per (Persistency Cluster) cluster_platform Plattformdienste & Basis AA Adaptive Application KVS KeyValueStorage (PortInterface) AA->KVS FS FileStorage (PortInterface) AA->FS LIFE Installation & Update (NativeInterface) AA->LIFE REC Recovery & Diagnostics (NativeInterface) AA->REC SM State Management SM->KVS DM Diagnostic Management DM->KVS DM->FS VUCM Update & Configuration Mgmt VUCM->KVS VUCM->FS RP Remote Persistency RP->KVS CRYPTO Cryptography (ara::crypto) KVS->CRYPTO OS Operating System (POSIX VFS / NVRAM) KVS->OS FS->OS

Diagrama de contexto: integração do cluster Persistency na Adaptive Platform com consumidores de aplicações e da plataforma, bem como o sistema operativo subjacente. Fontes: EXP_SWArchitecture p. 93, EXP_SWArchitecture p. 43.

Armazenamento chave-valor: instanciação, semântica transacional e mecanismos de flush

O acesso a parâmetros estruturados ocorre através da classe ara::per::KeyValueStorage, que é aberta através da chamada ara::per::OpenKeyValueStorage especificando um ara::core::InstanceSpecifier ([SWS_PER_00052]). O SharedHandle<KeyValueStorage> retornado encapsula a área de memória com segurança de tipos e evita a duplicação descontrolada através de construtores de movimento e cópia eliminados dos contentores base ([SWS_PER_00322], [SWS_PER_00324], [SWS_PER_00367]). Através de SetValue ([SWS_PER_00046]) e GetValue ([SWS_PER_00044], [SWS_PER_00332]), os pares chave-valor são modificados ou consultados; ao mesmo tempo, KeyExists ([SWS_PER_00043]) fornece a verificação de existência e GetAllKeys ([SWS_PER_00042]) a listagem completa de todas as chaves ativas.

As operações de escrita e eliminação estão sujeitas a uma semântica transacional estrita em memória: as alterações realizadas por SetValue, RemoveKey ([SWS_PER_00047]) ou RemoveAllKeys ([SWS_PER_00048]) permanecem inicialmente no buffer volátil do processo (EXP_SWArchitecture p. 230). Apenas a chamada explícita de SyncToStorage grava todas as modificações pendentes de forma atómica e permanente no suporte físico de dados ([SWS_PER_00049]). Se etapas transacionais ainda não gravadas tiverem de ser descartadas, DiscardPendingChanges repõe o estado para a versão do último SyncToStorage ou da abertura ([SWS_PER_00365]). As necessidades de armazenamento podem ser monitorizadas através de GetCurrentValueSize ([SWS_PER_00554]) para valores individuais, bem como de forma agregada, incluindo redundância e metadados, através de GetCurrentKeyValueStorageSize ([SWS_PER_00405]) (EXP_SWArchitecture p. 231).

Armazenamento transacional de chave-valor e flush físicoAdaptive Applicationara::per (KeyValueStorage)Betriebssystem / NVRAMSetValue(key, value)Armazenar valor em buffer na RAM (estado transacional)Result<void> (Erfolg)altCommit-Pfad (Dauerhaftes Sichern)SyncToStorage()Calcular CRC / redundância & encriptação opcionalwrite() / fsync()Status OKResult<void> (Persistiert)Caminho de rollback (descarte de alterações não guardadas)DiscardPendingChanges()Descartar alterações voláteis na RAMResult<void> (Reposto)

Diagrama de sequência: sequência de escrita e sincronização de um armazenamento chave-valor com buffering em memória e flush físico. Fontes: [SWS_PER_00046], [SWS_PER_00049], [SWS_PER_00365], EXP_SWArchitecture p. 230.

Acesso a ficheiros baseado em armazenamento e hierarquias de acessores tipificados

Para fluxos de dados não estruturados, blocos binários ou ficheiros de registo, utiliza-se a classe ara::per::FileStorage, que é inicializada através de ara::per::OpenFileStorage ([SWS_PER_00116]). Dentro de um contentor FileStorage, os ficheiros existentes podem ser listados através de GetAllFileNames ([SWS_PER_00110]), a sua existência pode ser verificada via FileExists ([SWS_PER_00112]) ou os ficheiros podem ser removidos através de DeleteFile ([SWS_PER_00111]). As quotas de tamanho são determinadas através de GetCurrentFileSize ([SWS_PER_00407]) e GetCurrentFileStorageSize ([SWS_PER_00406]) (EXP_SWArchitecture p. 231).

O próprio acesso a ficheiros segue o princípio de segregação de interface através de classes de acessores especializadas (EXP_SWArchitecture p. 88). Dependendo do modo requerido (OpenMode, [SWS_PER_00147], combináveis através de operadores bitwise [SWS_PER_00144], [SWS_PER_00434]), os métodos de fábrica produzem instâncias exclusivas de UniqueHandle ([SWS_PER_00371], [SWS_PER_00569]):

Operações comuns de posicionamento e dimensionamento, tais como GetPosition ([SWS_PER_00162]), SetPosition ([SWS_PER_00163]), navegação relativa através de MovePosition e enumeração Origin ([SWS_PER_00146], [SWS_PER_00164]), GetSize ([SWS_PER_00424]), bem como a verificação de fim de ficheiro IsEof ([SWS_PER_00107]), estão consolidadas na classe base comum FileAccessor. Metadados de ficheiro alargados, tais como carimbos de data/hora e motivos de criação, são lidos através de GetFileInfo e da estrutura FileInfo ([SWS_PER_00435], [SWS_PER_00436], [SWS_PER_00438], [SWS_PER_00441], [SWS_PER_00442], [SWS_PER_00443], [SWS_PER_00444], [SWS_PER_00445]). Interpretação: a separação estrita em instâncias de acessor não copiáveis deve servir principalmente, além da segurança de tipos, para evitar de forma determinística conflitos de escrita concorrentes ao nível do sistema operativo. Pergunta Q-a990a7aa44326447 (aberta)

PerAccessorHierarchy FileStorage FileStorage (Container-Verwaltung) ReadAccessor ReadAccessor + ReadText() + ReadLine() + ReadBinary() + GetChar() / PeekChar() + GetByte() / PeekByte() FileStorage->ReadAccessor OpenFileReadOnly() WriteAccessor WriteAccessor + WriteText() + WriteBinary() + SetFileSize() + SyncToFile() FileStorage->WriteAccessor OpenFileWriteOnly() ReadWriteAccessor ReadWriteAccessor (Kombinierter Lese-/Schreibzugriff) FileStorage->ReadWriteAccessor OpenFileReadWrite() FileAccessor FileAccessor + GetPosition() + SetPosition() + MovePosition() + GetSize() + IsEof() ReadAccessor->FileAccessor WriteAccessor->FileAccessor ReadWriteAccessor->ReadAccessor ReadWriteAccessor->WriteAccessor

Diagrama estrutural: hierarquia de interfaces e classes das classes de acesso a ficheiros e identificadores de acessor. Fontes: [SWS_PER_00113], [SWS_PER_00114], [SWS_PER_00115], EXP_SWArchitecture p. 88.

Gestão do ciclo de vida, processos de atualização e sincronização de manifesto

Para atualizações de software e novas instalações através do Update and Configuration Management (UCM), a Persistency oferece operações dedicadas de ciclo de vida (EXP_SWArchitecture p. 92). Se uma configuração de destino atualizada for aplicada durante o tempo de execução de uma aplicação, a aplicação pode determinar mediante CheckForManifestUpdate se existem alterações de configuração ([SWS_PER_00576]). Com ReloadPersistencyManifest, ara::per relê a configuração atualizada, após o que as definições de armazenamento alteradas se tornam ativas após o fecho e a reabertura seguintes ([SWS_PER_00577]).

Para a migração de dados de aplicação existentes, é registada uma função de callback através de RegisterApplicationDataUpdateCallback, a qual é acionada por ara::per sempre que uma migração de dados for necessária com base em versões divergentes de contratos ([SWS_PER_00356]). Alterações pontuais de elementos individuais podem ser monitorizadas através de RegisterDataUpdateIndication ([SWS_PER_00578]). O processo global de atualização da persistência é iniciado durante a fase de verificação por UpdatePersistency ([SWS_PER_00357]). Após a atualização bem-sucedida, CleanUpPersistency remove dados obsoletos de backup e migração ([SWS_PER_00567]), enquanto ResetPersistency esvazia completamente as áreas de memória, de modo a que sejam recriadas de raiz a partir do manifesto na próxima abertura ([SWS_PER_00358]).

Atualização do manifesto e migração de dadosAdaptive Applicationara::per (Persistency)UCM / ManifestCheckForManifestUpdate()Result<bool> (atualização disponível)optManifest-Aktualisierung erkanntReloadPersistencyManifest()Lese neue Target-ConfigurationKonfiguration geladenResult<void>UpdatePersistency()Callback: appDataUpdateCallback(storage, version)Migriere anwendungsspezifische DatenMigration abgeschlossenResult<void> (UpdatePersistency OK)CleanUpPersistency()Eliminar dados temporários de backup e dados antigosResult<void> (Bereinigt)

Diagrama de sequência: sequência de uma atualização de persistência com verificação de configuração, migração por callback e limpeza. Fontes: [SWS_PER_00356], [SWS_PER_00357], [SWS_PER_00567], [SWS_PER_00576], [SWS_PER_00577], EXP_SWArchitecture p. 92.

Monitorização da integridade, tratamento de redundância e recuperação

Para intercetar conjuntos de dados corrompidos, os armazenamentos chave-valor e de ficheiros suportam cópias de redundância configuráveis e mecanismos de integridade (CRC, hash, autenticação MAC e encriptação) (SWS_Persistency p. 104, EXP_SWArchitecture p. 230). Se as verificações internas de redundância falharem, as aplicações relevantes para a segurança podem ser informadas através de RegisterRecoveryReportCallback ([SWS_PER_00433]). O callback transmite o RecoveryReportKind (por ex., kKeyValueStorageRecoveryFailed), bem como as instâncias e chaves/nomes de ficheiro afetados ([SWS_PER_00432], EXP_SWArchitecture p. 91).

Para a recuperação direcionada de dados danificados, estão disponíveis métodos granulares de reparação e de reposição:

  • Recuperação: ao nível do armazenamento, RecoverKeyValueStorage ([SWS_PER_00333]) e RecoverAllFiles ([SWS_PER_00335]) permitem a reparação de contentores fechados; ao nível dos elementos, RecoverKey ([SWS_PER_00427]) e RecoverFile ([SWS_PER_00337]) recuperam entradas individuais danificadas através de um procedimento de melhor esforço.
  • Reposição para valores de fábrica: através de ResetKeyValueStorage ([SWS_PER_00334]) e ResetAllFiles ([SWS_PER_00336]), os contentores podem ser repostos para o estado de entrega inicial; de forma análoga, ResetKey ([SWS_PER_00426]) ou ResetFile ([SWS_PER_00338]) colocam elementos individuais no respetivo estado inicial configurado.
PerRecoveryFlow Start Acesso a dados ou verificação de integridade Check Verificação de redundância/integridade (CRC, hash, MAC, cópias) Start->Check Report Trigger RegisterRecoveryReportCallback (RecoveryReportKind gemeldet) Check->Report Fehler Success Memória novamente em estado consistente Check->Success OK Decide Wiederherstellungsstrategie? Report->Decide RecoverStorage RecoverKeyValueStorage() / RecoverAllFiles() Decide->RecoverStorage Correção completa do contentor RecoverSingle RecoverKey() / RecoverFile() (Best-Effort) Decide->RecoverSingle Einzelwert-Reparatur ResetDefault ResetKeyValueStorage() / ResetAllFiles() (Werkswerte) Decide->ResetDefault Reposição para o estado inicial RecoverStorage->Success RecoverSingle->Success ResetDefault->Success

Diagrama de atividades: caminho de decisão em caso de corrupção de dados, desde a verificação de redundância, passando por callbacks, até à recuperação ou reset. Fontes: [SWS_PER_00333], [SWS_PER_00334], [SWS_PER_00432], [SWS_PER_00433].

Comportamento em caso de erro

Os estados de erro em ara::per não são propagados através de exceções C++ descontroladas, mas sim mapeados de forma determinística através do tipo de retorno ara::core::Result ([SWS_PER_00044], [SWS_PER_00113]). O módulo define um domínio de erro próprio através de GetPerDomain ([SWS_PER_00352]), implementado por PerErrorDomain com resolução de erro padronizada através de Name ([SWS_PER_00314]) e Message ([SWS_PER_00315]), bem como da enumeração PerErrc ou do alias de tipo Errc ([SWS_PER_00311], [SWS_PER_00411]). Para ambientes com exceções ativadas, estão disponíveis PerException ([SWS_PER_00355], [SWS_PER_00412]) e ThrowAsException ([SWS_PER_00350]), enquanto MakeErrorCode encapsula a criação de códigos de erro em conformidade com a plataforma ([SWS_PER_00351]).

Os códigos de erro típicos abrangem conflitos relacionados a recursos e concorrência: operações como OpenKeyValueStorage ([SWS_PER_00052]), OpenFileStorage ([SWS_PER_00116]), DeleteFile ([SWS_PER_00111]) ou RecoverKeyValueStorage ([SWS_PER_00333]) falham com kResourceBusy se o elemento de armazenamento em questão já estiver aberto ou for modificado em paralelo por operações de manutenção como UpdatePersistency. Ao atribuir tipos incompatíveis, SetValue relata o erro kDataTypeMismatch ([SWS_PER_00046]). Em erros físicos de hardware (PerErrc::kPhysical), diferencia-se se há uma semântica de rollback (por exemplo, em operações de leitura e posicionamento como [SWS_PER_00167], [SWS_PER_00168], onde os ponteiros permanecem inalterados) ou se pode ocorrer corrupção de dados sem garantia de rollback (por exemplo, em [SWS_PER_00122], [SWS_PER_00166], [SWS_PER_00423]).

Para o diagnóstico de erros de sincronização e acesso, o módulo gera mensagens padronizadas de log DLT (SWS_Persistency p. 110). Nesse contexto, mensagens como SyncToStorage (Message-ID 0x80008037), SyncToFile (0x80008036) e DiscardPendingChanges (0x80008038) registram detalhadamente os conjuntos de chaves afetados e as ocupações de memória, de modo que o estado permaneça reconstruível mesmo em caso de desligamento incompleto (por exemplo, via ara::core::Deinitialize) (SWS_Persistency p. 110).

Evidências mais detalhadas

A arquitetura e a interação do cluster de persistência baseiam-se nos seguintes requisitos normativos e passagens de documentos:

Este guia de módulo baseia-se nas especificações do release AUTOSAR Adaptive R25-11. As declarações apoiam-se exclusivamente nos requisitos obrigatórios da SWS e nos documentos de arquitetura associados.

function: 116 class: 10 enumeration: 6 variable: 5 type alias: 2 struct: 1

ara::per

FileAccessor contains a common basis for ReadAccessor and WriteAccessor

base de ReadAccessor, WriteAccessor

FileInfo classe

This structure contains additional information on a file returned by GetFileInfo.

The File Storage contains a set of files identified by their file names.

The Key-Value Storage contains a set of keys with associated values.

Defines the error domain for Persistency.

herda de ara::core::ErrorDomain

Exception type thrown by Persistency.

herda de ara::core::Exception

ReadAccessor is used to read file data

herda de FileAccessor

base de ReadWriteAccessor

ReadWriteAccessor is used to read and write file data

herda de ReadAccessor, WriteAccessor

Handle to a File Storage or Key-Value Storage

Handle to a ReadAccessor or ReadWriteAccessor

WriteAccessor is used to write file data

herda de FileAccessor

base de ReadWriteAccessor

Checks for updates of the Persistency Target Configuration. This method can be used to detect configuration updates that are installed by UCM while the Adaptive Application that uses Persistency is running. To re-read the updated Target Configuration, the Adaptive Application needs to call ara::per:: ReloadPersistencyManifest.

ara::core::Result< bool > CheckForManifestUpdate () noexcept;

Removes backup data and other unused data of all Persistency Key-Value Storages and File Storages.

ara::core::Result< void > CleanUpPersistency () noexcept;

Returns the space in bytes currently occupied by a File Storage. The returned size includes all metadata and the space used for redundancy and backups. The returned size is only guaranteed to be accurate if the File Storage is not opened and no other operation on the File Storage takes place at the same time.

ara::core::Result< std::uint64_t > GetCurrentFileStorageSize (const ara::core::InstanceSpecifier &fs) noexcept;

Returns the space in bytes currently occupied by a Key-Value Storage. The returned size includes all metadata and the space used for redundancy and backups. The returned size is only guaranteed to be accurate if the Key-Value Storage is not opened and no other operation on the Key-Value Storage takes place at the same time.

ara::core::Result< std::uint64_t > GetCurrentKeyValueStorageSize (const ara::core::InstanceSpecifier &kvs) noexcept;
GetPerDomain função

Returns the global PerErrorDomain object.

constexpr const ara::core::ErrorDomain & GetPerDomain () noexcept;
MakeErrorCode função

Creates an error code.

constexpr ara::core::ErrorCode MakeErrorCode (PerErrc code, ara::core::ErrorDomain::SupportDataType data) noexcept;

Opens a File Storage. OpenFileStorage will fail with kResourceBusy when the File Storage is currently being modified by a call from another thread to UpdatePersistency, CleanUpPersistency, ResetPersistency, RecoverAllFiles, or ResetAllFiles. Because multiple threads can access the same File Storage concurrently, the File Storage might not be closed when the SharedHandle returned by this function goes out of scope. It will only be closed when all SharedHandles that refer to the same File Storage went out of scope.

ara::core::Result< SharedHandle< FileStorage > > OpenFileStorage (const ara::core::InstanceSpecifier &fs) noexcept;

Opens a Key-Value Storage. OpenKeyValueStorage will fail with kResourceBusy when the Key-Value Storage is currently being modified by a call from another thread to UpdatePersistency, CleanUpPersistency, Reset Persistency, RecoverKeyValueStorage, or ResetKeyValueStorage. Because multiple threads can access the same Key-Value Storage concurrently, the Key-Value Storage might not be closed when the SharedHandle returned by this function goes out of scope. It will only be closed when all SharedHandles that refer to the same Key-Value Storage went out of scope.

ara::core::Result< SharedHandle< KeyValueStorage > > OpenKeyValue Storage (const ara::core::InstanceSpecifier &kvs) noexcept;
operator| função

Merges two OpenMode modifiers into one.

constexpr OpenMode operator| (OpenMode left, OpenMode right);
operator|= função

Merges an OpenMode modifier into this OpenMode.

OpenMode & operator|= (OpenMode &left, const OpenMode &right);

Recovers a File Storage, including all files. RecoverAllFiles recovers a File Storage when the redundancy checks fail. It will fail with kResourceBusy when the File Storage is currently open, or when it is modified by a call from another thread to UpdatePersistency, CleanUpPersistency, ResetPersistency, RecoverAllFiles, or ResetAllFiles. This method does a best-effort recovery of all files. After recovery, files might show outdated or initial content, or might be lost.

ara::core::Result< void > RecoverAllFiles (const ara::core::Instance Specifier &fs) noexcept;

Recovers a Key-ValueStorage. RecoverKeyValueStorage allows to recover a Key-Value Storage when the redundancy checks fail. It will fail with kResourceBusy when the Key-Value Storage is currently open, or when it is modified by a call from another thread to UpdatePersistency, CleanUpPersistency, Reset Persistency, RecoverKeyValueStorage, or ResetKeyValueStorage. This method does a best-effort recovery of all key-value pairs. After recovery, keys might show outdated or initial value, or might be lost.

ara::core::Result< void > RecoverKeyValueStorage (const ara::core::InstanceSpecifier &kvs) noexcept;

Registers an application data update callback with Persistency. The provided callback function will be called by Persistency if an update of stored application data might be necessary. This decision is based on the contract versions. The contract version that last accessed Persistency is provided as an argument to the callback, as well as the ara::core::InstanceSpecifier referring to the updated Key- Value Storage or File Storage. Based on this information, the Adaptive Application can decide which updates are actually necessary, e.g. a migration from any older contract version could be supported, with different steps required for each of these. The provided function will be called from the context of ara::per::UpdatePersistency, ara::per::OpenKeyValueStorage, or ara::per::OpenFileStorage.

void RegisterApplicationDataUpdateCallback (std::function< void(const ara::core::InstanceSpecifier &storage, ara::core::String contract Version)> appDataUpdateCallback) noexcept;

Registers a data update indication callback with Persistency. The provided callback function will be called by Persistency when an update of stored data happened. It will be called from the context of ara::per::UpdatePersistency, ara:: per::OpenKeyValueStorage, or ara::per::OpenFileStorage.

void RegisterDataUpdateIndication (std::function< void(const ara::core::InstanceSpecifier &updatedStorage, ara::core::StringView updatedElement)> dataUpdateIndication, ara::core::InstanceSpecifier monitoredStorage, ara::core::Vector< ara::core::String > monitored Elements) noexcept;

Register a recovery reporting callback with Persistency. This callback can be used in safety-aware Adaptive Applications to detect actions of the Persistency that are related to the correctness of the persisted data and the reliability of the storage.

void RegisterRecoveryReportCallback (std::function< void(const ara::core::InstanceSpecifier &storage, ara::per::RecoveryReportKind recoveryReportKind, ara::core::Vector< ara::core::String > reported Elements, ara::core::Vector< std::uint8_t > reportedInstances)> recoveryReportCallback) noexcept;

Re-reads the Target Configuration. This method can be used to prepare for updates of the Key-Value Storages and File Storages of Persistency after a new Target Configuration was installed by UCM while the Adaptive Application that uses Persistency is running. Storages are only updated after closing them, either when they are opened again or by an explicit call to ara:: per::UpdatePersistency.

ara::core::Result< void > ReloadPersistencyManifest () noexcept;
ResetAllFiles função

Resets a File Storage, including all files. ResetAllFiles resets a File Storage to the initial state, containing only the files which were deployed from the Target Configuration, with their initial content. Afterwards, the File Storage will appear as if it was newly installed from the current Target Configuration. It will fail with kResourceBusy when the File Storage is currently open, or when it is modified by a call from another thread to UpdatePersistency, CleanUpPersistency, ResetPersistency, RecoverAllFiles, or ResetAllFiles.

ara::core::Result< void > ResetAllFiles (const ara::core::Instance Specifier &fs) noexcept;

Resets a Key-Value Storage to the initial state. ResetKeyValueStorage allows to reset a Key-Value Storage to the initial state, containing only key-value pairs which were deployed from the Target Configuration, with their initial values. Afterwards, the Key-Value Storage will appear as if it was newly installed from the current Target Configuration. It will fail with kResourceBusy when the Key-Value Storage is currently open, or when it is modified by a call from another thread to UpdatePersistency, CleanUpPersistency, Reset Persistency, RecoverKeyValueStorage, or ResetKeyValueStorage.

ara::core::Result< void > ResetKeyValueStorage (const ara::core::InstanceSpecifier &kvs) noexcept;

Resets all Key-Value Storages and File Storages by entirely removing their content. The Key-Value Storages and File Storages will be re-created when ara::per:: OpenFileStorage or ara::per::OpenKeyValueStorage is called next time.

ara::core::Result< void > ResetPersistency () noexcept;

Updates all Persistency Key-Value Storages and File Storages after a new Target Configuration was installed. This method can be used to update the persistent data of the Adaptive Application during verification phase.

ara::core::Result< void > UpdatePersistency () noexcept;
FileCreationState enumeração

This enumeration describes how and when a file was created.

enum class FileCreationState : std::uint32_t {...};

This enumeration describes how and when a file was last modified.

enum class FileModificationState : std::uint32_t {...};
OpenMode enumeração

This enumeration defines how a file shall be opened. The values can be combined (using | and |=) as long as they do not contradict each other.

enum class OpenMode : std::uint32_t {...};
Origin enumeração

Specification of origin used in MovePosition.

enum class Origin : std::uint32_t {...};
PerErrc enumeração

Defines the errors for Persistency. The enumeration values 0 - 255 are reserved for AUTOSAR assigned errors, the stack provider is free to define additional errors starting from 256.

enum class PerErrc : ara::core::ErrorDomain::CodeType {...};
RecoveryReportKind enumeração

Defines the reported recovery actions.

enum class RecoveryReportKind : std::uint32_t {...};

Namespaces

Diagrama de classes UML do módulo

Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.

G cluster_1 ara::per nara__per__FileAccessor932 FileAccessor nara__per__ReadAccessor956 ReadAccessor nara__per__ReadAccessor956->nara__per__FileAccessor932 nara__per__ReadWriteAccessor483 ReadWriteAccessor nara__per__ReadWriteAccessor483->nara__per__ReadAccessor956 nara__per__WriteAccessor940 WriteAccessor nara__per__ReadWriteAccessor483->nara__per__WriteAccessor940 nara__per__WriteAccessor940->nara__per__FileAccessor932 nara__per__FileInfo503 «struct» FileInfo nara__per__FileStorage945 FileStorage nara__per__KeyValueStorage981 KeyValueStorage nara__per__PerErrorDomain979 PerErrorDomain nara__core__ErrorDomain335 ara::core::ErrorDomain nara__per__PerErrorDomain979->nara__core__ErrorDomain335 nara__per__PerException768 PerException nara__core__Exception792 ara::core::Exception nara__per__PerException768->nara__core__Exception792 nara__per__SharedHandle980 SharedHandle nara__per__UniqueHandle733 UniqueHandle