módulo ara::per — Persistency
Guía del móduloGENERADO POR IA
Guarda pares clave-valor estructurados y archivos de forma persistente, transaccional y con abstracción del hardware.
Guarda pares clave-valor estructurados y archivos de forma persistente, transaccional y con abstracción del hardware.
El módulo de Adaptive Persistency (ara::per) proporciona una capa de abstracción independiente del hardware para el almacenamiento no volátil de datos, que abarca tanto el almacenamiento estructurado de clave-valor (KeyValueStorage) como el acceso basado en archivos (FileStorage) (EXP_SWArchitecture p. 43). Las modificaciones en pares clave-valor están sujetas a un almacenamiento en búfer en memoria y requieren una llamada de sincronización explícita (SyncToStorage) para asegurarse de forma permanente ([SWS_PER_00049]). Además de los mecanismos de integridad y recuperación de datos, el módulo también regula los procesos de actualización y migración durante las actualizaciones de software ([SWS_PER_00357]).
El clúster funcional Persistency (ara::per) proporciona una capa de abstracción estandarizada para el almacenamiento no volátil de datos en AUTOSAR Adaptive Platform (EXP_SWArchitecture p. 43). Ofrece dos modelos de acceso fundamentales: el almacenamiento basado en claves KeyValueStorage para parámetros estructurados y el almacenamiento basado en archivos FileStorage para flujos de datos útiles no estructurados (SWS_Persistency p. 219). Tanto las Adaptive Applications como los demonios centrales de la plataforma como State Management, Diagnostic Management o Update and Configuration Management utilizan estas interfaces para almacenar sus estados de forma persistente con independencia de los controladores físicos de memoria flash o del sistema de archivos (EXP_SWArchitecture p. 93).
Diagrama de contexto: integración del clúster Persistency en la Adaptive Platform con consumidores de aplicación y de plataforma, así como con el sistema operativo subyacente. Fuentes: EXP_SWArchitecture p. 93, EXP_SWArchitecture p. 43.
Las operaciones de escritura en KeyValueStorage siguen una estricta semántica transaccional en memoria ([SWS_PER_00046]). Las modificaciones en pares clave-valor permanecen inicialmente en un búfer volátil y solo se escriben permanentemente en el soporte de almacenamiento mediante la llamada síncrona SyncToStorage ([SWS_PER_00049]), mientras que DiscardPendingChanges descarta los estados no guardados ([SWS_PER_00365]). En FileStorage, el acceso se realiza a través de accesores tipados y especializados (ReadAccessor, WriteAccessor, ReadWriteAccessor), que se gestionan exclusivamente a través de UniqueHandle ([SWS_PER_00113], [SWS_PER_00114], [SWS_PER_00115]).
Diagrama de secuencia: secuencia de escritura y sincronización de un almacenamiento clave-valor con almacenamiento en búfer en memoria y vaciado físico (flush). Fuentes: [SWS_PER_00046], [SWS_PER_00049], [SWS_PER_00365], EXP_SWArchitecture p. 230.
Asimismo, el módulo integra amplios mecanismos de ciclo de vida y tolerancia a fallos: los cambios de configuración durante el tiempo de ejecución se procesan a través de CheckForManifestUpdate y ReloadPersistencyManifest ([SWS_PER_00576], [SWS_PER_00577]), mientras que las migraciones de datos específicas de la aplicación se realizan mediante callbacks de actualización ([SWS_PER_00356], [SWS_PER_00357]). Si fallan las comprobaciones de redundancia o de integridad basadas en manifiestos, los callbacks informan sobre el estado de corrupción ([SWS_PER_00433]), tras lo cual los datos dañados pueden repararse mediante RecoverKeyValueStorage, RecoverFile o mediante operaciones de reinicio ([SWS_PER_00333], [SWS_PER_00337], [SWS_PER_00334]).
Límites del sistema e integración arquitectónica de ara::per
El clúster funcional Persistency (ara::per) proporciona mecanismos de abstracción estandarizados para el almacenamiento no volátil de datos en AUTOSAR Adaptive Platform (EXP_SWArchitecture p. 43). Desacopla tanto las aplicaciones definidas por el usuario como los servicios funcionales de la plataforma de los sistemas de archivos específicos del sistema operativo, las estructuras de partición y los controladores de flash o NVRAM (EXP_SWArchitecture p. 93). La provisión incluye dos paradigmas principales de almacenamiento diferenciados: el acceso a datos basado en claves mediante KeyValueStorage y el almacenamiento jerárquico de archivos mediante FileStorage (SWS_Persistency p. 219). Servicios de plataforma como Diagnostic Management (EXP_SWArchitecture p. 176), State Management (EXP_SWArchitecture p. 55), Update and Configuration Management (SWS_UpdateAndConfigurationManagement p. 18) y Remote Persistency (SWS_RemotePersistency p. 9) utilizan estas interfaces como port interfaces estandarizadas ([SWS_PER_00052], [SWS_PER_00116]).
Además de proporcionar abstracciones de almacenamiento local, ara::per integra primitivas criptográficas y comprobaciones de redundancia directamente en la interfaz con el sistema operativo anfitrión (EXP_SWArchitecture p. 230). La configuración funcional de un almacenamiento de persistencia se modela declarativamente en el manifiesto de AUTOSAR y vincula especificaciones de cuotas, hashes de integridad, métodos CRC y rutas de cifrado criptográfico a instancias concretas (SWS_Persistency p. 104). Las partes de biblioteca de otros clústeres funcionales integran Persistency directamente a través de configuraciones de destino propias, mientras que los procesos de tipo demonio acceden a las unidades de almacenamiento a través de instance specifiers de forma similar a las aplicaciones convencionales (SWS_Persistency p. 35).
Diagrama de contexto: integración del clúster Persistency en la Adaptive Platform con consumidores de aplicación y de plataforma, así como con el sistema operativo subyacente. Fuentes: EXP_SWArchitecture p. 93, EXP_SWArchitecture p. 43.
Almacenamiento clave-valor: instanciación, semántica transaccional y mecanismos de vaciado (flush)
El acceso a parámetros estructurados se realiza a través de la clase ara::per::KeyValueStorage, que se abre mediante la llamada ara::per::OpenKeyValueStorage indicando un ara::core::InstanceSpecifier ([SWS_PER_00052]). El SharedHandle<KeyValueStorage> devuelto encapsula el área de almacenamiento con seguridad de tipos y evita la duplicación incontrolada gracias a los constructores de copia y movimiento eliminados de los contenedores base ([SWS_PER_00322], [SWS_PER_00324], [SWS_PER_00367]). A través de SetValue ([SWS_PER_00046]) y GetValue ([SWS_PER_00044], [SWS_PER_00332]) se modifican o consultan pares clave-valor; por su parte, KeyExists ([SWS_PER_00043]) proporciona la comprobación de existencia y GetAllKeys ([SWS_PER_00042]), la enumeración completa de todas las claves activas.
Las operaciones de escritura y borrado están sujetas a una estricta semántica transaccional en memoria: las modificaciones introducidas por SetValue, RemoveKey ([SWS_PER_00047]) o RemoveAllKeys ([SWS_PER_00048]) permanecen inicialmente en el búfer volátil del proceso (EXP_SWArchitecture p. 230). Solo la llamada explícita a SyncToStorage guarda de forma atómica y permanente todas las modificaciones pendientes en el soporte de datos físico ([SWS_PER_00049]). Si se desea descartar pasos transaccionales aún no escritos, DiscardPendingChanges restablece el estado a la situación del último SyncToStorage o del momento de la apertura ([SWS_PER_00365]). Las necesidades de almacenamiento pueden supervisarse mediante GetCurrentValueSize ([SWS_PER_00554]) para valores individuales y, de forma agregada incluyendo redundancia y metadatos, mediante GetCurrentKeyValueStorageSize ([SWS_PER_00405]) (EXP_SWArchitecture p. 231).
Diagrama de secuencia: secuencia de escritura y sincronización de un almacenamiento clave-valor con almacenamiento en búfer en memoria y vaciado físico (flush). Fuentes: [SWS_PER_00046], [SWS_PER_00049], [SWS_PER_00365], EXP_SWArchitecture p. 230.
Acceso a almacenamiento basado en archivos y jerarquías de accesores tipados
Para flujos de datos no estructurados, bloques binarios o archivos de registro sirve la clase ara::per::FileStorage, que se inicializa a través de ara::per::OpenFileStorage ([SWS_PER_00116]). Dentro de un contenedor FileStorage, los archivos existentes se pueden listar mediante GetAllFileNames ([SWS_PER_00110]), comprobar su existencia mediante FileExists ([SWS_PER_00112]) o eliminar archivos mediante DeleteFile ([SWS_PER_00111]). Las cuotas de tamaño se determinan a través de GetCurrentFileSize ([SWS_PER_00407]) y GetCurrentFileStorageSize ([SWS_PER_00406]) (EXP_SWArchitecture p. 231).
El acceso a archivos en sí sigue el principio de segregación de interfaces mediante clases accesoras especializadas (EXP_SWArchitecture p. 88). En función del modo requerido (OpenMode, [SWS_PER_00147], combinables mediante operadores bit a bit [SWS_PER_00144], [SWS_PER_00434]), los métodos de fábrica generan instancias exclusivas de UniqueHandle ([SWS_PER_00371], [SWS_PER_00569]):
OpenFileReadOnly([SWS_PER_00114], [SWS_PER_00376], [SWS_PER_00430]): Proporciona unUniqueHandle<ReadAccessor>para operaciones de lectura 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]) yPeekByte([SWS_PER_00418]).OpenFileWriteOnly([SWS_PER_00115], [SWS_PER_00377], [SWS_PER_00431]): Proporciona unUniqueHandle<WriteAccessor>para operaciones de escritura medianteWriteText([SWS_PER_00166]),WriteBinary([SWS_PER_00423]), operadores de flujo de conveniencia ([SWS_PER_00125]), truncamiento de archivos medianteSetFileSize([SWS_PER_00428]), así como el vaciado físico a través deSyncToFile([SWS_PER_00122]).OpenFileReadWrite([SWS_PER_00113], [SWS_PER_00375], [SWS_PER_00429]): Combina capacidades de lectura y escritura en unUniqueHandle<ReadWriteAccessor>.
Las operaciones comunes de posición y tamaño, como GetPosition ([SWS_PER_00162]), SetPosition ([SWS_PER_00163]), la navegación relativa mediante MovePosition y la enumeración Origin ([SWS_PER_00146], [SWS_PER_00164]), GetSize ([SWS_PER_00424]), así como la comprobación de fin de archivo IsEof ([SWS_PER_00107]), están consolidadas en la clase base común FileAccessor. Los metadatos de archivo ampliados, como marcas de tiempo y causas de creación, se leen a través de GetFileInfo y la estructura 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]). Interpretación: la separación estricta en instancias de accesores no copiables probablemente sirva, además de para garantizar la seguridad de tipos, principalmente para evitar de forma determinista conflictos de escritura concurrentes a nivel del sistema operativo. Pregunta Q-a990a7aa44326447 (abierta)
Diagrama de estructura: jerarquía de interfaces y clases de las clases de acceso a archivos y manejadores de accesores. Fuentes: [SWS_PER_00113], [SWS_PER_00114], [SWS_PER_00115], EXP_SWArchitecture p. 88.
Gestión del ciclo de vida, secuencias de actualización y sincronización de manifiestos
Para actualizaciones de software y nuevas instalaciones a través de Update and Configuration Management (UCM), Persistency ofrece operaciones dedicadas del ciclo de vida (EXP_SWArchitecture p. 92). Si durante el tiempo de ejecución de una aplicación se aplica una configuración de destino actualizada, la aplicación puede determinar mediante CheckForManifestUpdate si existen cambios de configuración ([SWS_PER_00576]). Con ReloadPersistencyManifest, ara::per vuelve a leer la configuración actualizada, tras lo cual las definiciones de almacenamiento modificadas pasan a estar activas tras el siguiente cierre y reapertura ([SWS_PER_00577]).
Para migrar datos de aplicación existentes, a través de RegisterApplicationDataUpdateCallback se registra una función de retrollamada que es activada por ara::per cuando se requiere una migración de datos basada en versiones de contrato divergentes ([SWS_PER_00356]). Los cambios puntuales en elementos individuales pueden supervisarse mediante RegisterDataUpdateIndication ([SWS_PER_00578]). El proceso global de actualización de persistencia se inicia durante la fase de verificación a través de UpdatePersistency ([SWS_PER_00357]). Tras una actualización correcta, CleanUpPersistency elimina los datos obsoletos de copia de seguridad y migración ([SWS_PER_00567]), mientras que ResetPersistency vacía por completo las áreas de almacenamiento, de modo que en la siguiente apertura se vuelvan a crear inicialmente a partir del manifiesto ([SWS_PER_00358]).
Diagrama de secuencias: flujo de una actualización de persistencia con verificación de configuración, migración por retrollamada y saneamiento. Fuentes: [SWS_PER_00356], [SWS_PER_00357], [SWS_PER_00567], [SWS_PER_00576], [SWS_PER_00577], EXP_SWArchitecture p. 92.
Supervisión de integridad, tratamiento de redundancia y recuperación
Para interceptar registros corruptos, los almacenamientos de clave-valor y de archivos admiten copias de redundancia configurables y mecanismos de integridad (CRC, hash, autenticación MAC y cifrado) (SWS_Persistency p. 104, EXP_SWArchitecture p. 230). Si fallan las comprobaciones internas de redundancia, las aplicaciones relevantes para la seguridad pueden ser informadas a través de RegisterRecoveryReportCallback ([SWS_PER_00433]). La retrollamada transmite el RecoveryReportKind (p. ej., kKeyValueStorageRecoveryFailed), así como las instancias y claves/nombres de archivo afectados ([SWS_PER_00432], EXP_SWArchitecture p. 91).
Para la recuperación selectiva de datos dañados, se dispone de métodos granulares de reparación y restablecimiento:
- Recuperación: a nivel de almacenamiento,
RecoverKeyValueStorage([SWS_PER_00333]) yRecoverAllFiles([SWS_PER_00335]) permiten la reparación de contenedores cerrados; a nivel de elemento,RecoverKey([SWS_PER_00427]) yRecoverFile([SWS_PER_00337]) recuperan entradas dañadas individuales mediante el principio de mejor esfuerzo. - Restablecimiento a valores de fábrica: a través de
ResetKeyValueStorage([SWS_PER_00334]) yResetAllFiles([SWS_PER_00336]), los contenedores pueden restablecerse al estado de suministro inicial; de forma análoga,ResetKey([SWS_PER_00426]) oResetFile([SWS_PER_00338]) devuelven elementos individuales a su estado inicial configurado.
Diagrama de actividades: ruta de decisión en caso de corrupción de datos, desde la comprobación de redundancia a través de retrollamadas hasta la recuperación o el reinicio. Fuentes: [SWS_PER_00333], [SWS_PER_00334], [SWS_PER_00432], [SWS_PER_00433].
Comportamiento en caso de error
Los estados de error no se propagan en ara::per mediante excepciones no controladas de C++, sino que se mapean de forma determinista mediante el tipo de retorno ara::core::Result ([SWS_PER_00044], [SWS_PER_00113]). El módulo define un dominio de error propio a través de GetPerDomain ([SWS_PER_00352]), implementado por PerErrorDomain con resolución estandarizada de errores mediante Name ([SWS_PER_00314]) y Message ([SWS_PER_00315]), así como la enumeración PerErrc o el alias de tipo Errc ([SWS_PER_00311], [SWS_PER_00411]). Para entornos con excepciones habilitadas están disponibles PerException ([SWS_PER_00355], [SWS_PER_00412]) y ThrowAsException ([SWS_PER_00350]), mientras que MakeErrorCode encapsula la creación de códigos de error conformes con la plataforma ([SWS_PER_00351]).
Los códigos de error típicos cubren conflictos relacionados con recursos y concurrencia: operaciones como OpenKeyValueStorage ([SWS_PER_00052]), OpenFileStorage ([SWS_PER_00116]), DeleteFile ([SWS_PER_00111]) o RecoverKeyValueStorage ([SWS_PER_00333]) fallan con kResourceBusy si el elemento de almacenamiento en cuestión ya está abierto o si se modifica en paralelo mediante operaciones de mantenimiento como UpdatePersistency. Al asignar tipos incompatibles, SetValue notifica el error kDataTypeMismatch ([SWS_PER_00046]). En caso de errores físicos de hardware (PerErrc::kPhysical), se diferencia si existe semántica de reversión (p. ej., en operaciones de lectura y posición como [SWS_PER_00167], [SWS_PER_00168], donde los punteros permanecen inalterados) o si puede producirse corrupción de datos sin garantía de reversión (p. ej., en [SWS_PER_00122], [SWS_PER_00166], [SWS_PER_00423]).
Para el diagnóstico de errores de sincronización y acceso, el módulo genera mensajes de registro estandarizados de DLT (SWS_Persistency p. 110). En este contexto, mensajes como SyncToStorage (ID de mensaje 0x80008037), SyncToFile (0x80008036) y DiscardPendingChanges (0x80008038) registran detalladamente los conjuntos de claves afectados y las ocupaciones de almacenamiento, con lo cual el estado sigue siendo reconstruible incluso ante un apagado incompleto (p. ej., mediante ara::core::Deinitialize) (SWS_Persistency p. 110).
Más evidencia detallada
La arquitectura y la interacción del clúster de persistencia se basan en las siguientes directrices normativas y referencias documentales:
- Interfaces arquitectónicas y acoplamiento de clústeres: la provisión de
KeyValueStorageyFileStoragea daemons de plataforma de nivel superior está establecida en EXP_SWArchitecture p. 90, EXP_SWArchitecture p. 87, EXP_SWArchitecture p. 55 (State Management), EXP_SWArchitecture p. 145 (VUCM), EXP_SWArchitecture p. 176 (DM) y SWS_RemotePersistency p. 9. - Cálculo de memoria y control de cuotas: la determinación de los tamaños asignados a nivel de contenedor y archivo se basa en [SWS_PER_00405], [SWS_PER_00406], [SWS_PER_00407], así como en los correspondientes escenarios de interacción en EXP_SWArchitecture p. 231 y EXP_SWArchitecture p. 231.
- Integridad transaccional y conexión criptográfica: el flujo de confirmación en dos fases mediante gestión en memoria y la protección mediante Cryptography Stack se basan en [SWS_PER_00049], [SWS_PER_00365] y EXP_SWArchitecture p. 230.
- Marco de actualización y migración: la coordinación de actualizaciones de software y recargas de manifiestos se especifica a través de [SWS_PER_00356], [SWS_PER_00357], [SWS_PER_00567], [SWS_PER_00576], [SWS_PER_00577] y EXP_SWArchitecture p. 92.
Esta guía de módulo se basa en las especificaciones del release AUTOSAR Adaptive R25-11. Las afirmaciones se fundamentan exclusivamente en los requisitos obligatorios de SWS y los documentos de arquitectura asociados.
function: 116 class: 10 enumeration: 6 variable: 5 type alias: 2 struct: 1
Clases
FileAccessorFileInfoFileStorageKeyValueStoragePerErrorDomainPerExceptionReadAccessorReadWriteAccessorSharedHandleUniqueHandleWriteAccessorFunciones
CheckForManifestUpdateCleanUpPersistencyGetCurrentFileStorageSizeGetCurrentKeyValueStorageSizeGetPerDomainMakeErrorCodeOpenFileStorageOpenKeyValueStorageoperator|operator|=RecoverAllFilesRecoverKeyValueStorageRegisterApplicationDataUpdateCallbackRegisterDataUpdateIndicationRegisterRecoveryReportCallbackReloadPersistencyManifestResetAllFilesResetKeyValueStorageResetPersistencyUpdatePersistencyEnumeraciones
FileCreationStateFileModificationStateOpenModeOriginPerErrcRecoveryReportKindMapa de temas
ara::per
37No hay datos de elementos para esta versión
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.
hereda de ara::core::ErrorDomain
Exception type thrown by Persistency.
hereda de ara::core::Exception
ReadWriteAccessor is used to read and write file data
hereda 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 clases UML del 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 en alemán