módulo ara::per — Persistency
Guia do móduloGERADO POR IA
Protege pares chave-valor estruturados e ficheiros de forma persistente, transacional e com abstração de hardware.
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).
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]).
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).
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).
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]):
OpenFileReadOnly([SWS_PER_00114], [SWS_PER_00376], [SWS_PER_00430]): fornece umUniqueHandle<ReadAccessor>para operações de leitura comoReadText([SWS_PER_00165], [SWS_PER_00420]),ReadLine([SWS_PER_00119]),GetChar([SWS_PER_00168]),PeekChar([SWS_PER_00167]),ReadBinary([SWS_PER_00421], [SWS_PER_00422]),GetByte([SWS_PER_00419]) ePeekByte([SWS_PER_00418]).OpenFileWriteOnly([SWS_PER_00115], [SWS_PER_00377], [SWS_PER_00431]): fornece umUniqueHandle<WriteAccessor>para operações de escrita viaWriteText([SWS_PER_00166]),WriteBinary([SWS_PER_00423]), operadores de fluxo de conveniência ([SWS_PER_00125]), truncamento de ficheiros viaSetFileSize([SWS_PER_00428]), bem como o esvaziamento físico através deSyncToFile([SWS_PER_00122]).OpenFileReadWrite([SWS_PER_00113], [SWS_PER_00375], [SWS_PER_00429]): combina capacidades de leitura e escrita numUniqueHandle<ReadWriteAccessor>.
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)
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]).
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]) eRecoverAllFiles([SWS_PER_00335]) permitem a reparação de contentores fechados; ao nível dos elementos,RecoverKey([SWS_PER_00427]) eRecoverFile([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]) eResetAllFiles([SWS_PER_00336]), os contentores podem ser repostos para o estado de entrega inicial; de forma análoga,ResetKey([SWS_PER_00426]) ouResetFile([SWS_PER_00338]) colocam elementos individuais no respetivo estado inicial configurado.
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:
- Interfaces arquiteturais e acoplamento de cluster: a disponibilização de
KeyValueStorageeFileStoragepara daemons de plataforma de nível superior está ancorada em EXP_SWArchitecture p. 90, EXP_SWArchitecture p. 87, EXP_SWArchitecture p. 55 (State Management), EXP_SWArchitecture p. 145 (VUCM), EXP_SWArchitecture p. 176 (DM) e SWS_RemotePersistency p. 9. - Cálculo de armazenamento e controle de cotas: a determinação dos tamanhos alocados no nível de contêiner e de arquivo baseia-se em [SWS_PER_00405], [SWS_PER_00406], [SWS_PER_00407] bem como nos cenários de interação associados em EXP_SWArchitecture p. 231 e EXP_SWArchitecture p. 231.
- Integridade transacional e conexão criptográfica: o fluxo de commit em duas fases via gerenciamento em memória e a proteção por meio da Cryptography Stack baseiam-se em [SWS_PER_00049], [SWS_PER_00365] e EXP_SWArchitecture p. 230.
- Framework de atualização e migração: a coordenação de atualizações de software e recarregamentos de manifestos é especificada por meio de [SWS_PER_00356], [SWS_PER_00357], [SWS_PER_00567], [SWS_PER_00576], [SWS_PER_00577] e EXP_SWArchitecture p. 92.
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
Classes
FileAccessorFileInfoFileStorageKeyValueStoragePerErrorDomainPerExceptionReadAccessorReadWriteAccessorSharedHandleUniqueHandleWriteAccessorFunções
CheckForManifestUpdateCleanUpPersistencyGetCurrentFileStorageSizeGetCurrentKeyValueStorageSizeGetPerDomainMakeErrorCodeOpenFileStorageOpenKeyValueStorageoperator|operator|=RecoverAllFilesRecoverKeyValueStorageRegisterApplicationDataUpdateCallbackRegisterDataUpdateIndicationRegisterRecoveryReportCallbackReloadPersistencyManifestResetAllFilesResetKeyValueStorageResetPersistencyUpdatePersistencyEnumerações
FileCreationStateFileModificationStateOpenModeOriginPerErrcRecoveryReportKindMapa de temas
ara::per
37Não há dados de elementos para esta versão
ara::per
FileAccessor contains a common basis for ReadAccessor and WriteAccessor
base de ReadAccessor, WriteAccessor
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
ReadWriteAccessor is used to read and write file data
herda de ReadAccessor, WriteAccessor
Handle to a ReadAccessor or 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;Returns the global PerErrorDomain object.
constexpr const ara::core::ErrorDomain & GetPerDomain () noexcept;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;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;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;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 {...};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 {...};Specification of origin used in MovePosition.
enum class Origin : std::uint32_t {...};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 {...};Defines the reported recovery actions.
enum class RecoveryReportKind : std::uint32_t {...};Namespaces
- ara::per 11 Klassen, 20 freie Funktionen
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.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão