DEENESPTFRRUARHIKOZHNL

module ara::per — Persistency

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

Module guideAI-GENERATED

Secures structured key-value pairs and files persistently, transaction-safely, and abstracted from hardware.
AI-GENERATED unreviewed Model: gemini-3.8-flash-medium · Effort: medium · Temperature: not controllable · Prompt: 5a09fccb0066 Provenance Open questions (1)
Causal anchor: R25-11 Valid from R25-11 Synthesized for this specification release.
translated from the German guidegemini-3.8-flash-low · 2026-10-13 · German original

Secures structured key-value pairs and files persistently, transaction-safely, and abstracted from hardware.

The Adaptive module Persistency (ara::per) provides a hardware-independent abstraction layer for non-volatile data storage, encompassing both structured key-value storage (KeyValueStorage) and file-based access (FileStorage) (EXP_SWArchitecture p. 43). Modifications to key-value pairs are subject to in-memory buffering and require an explicit synchronization call (SyncToStorage) to be permanently persisted ([SWS_PER_00049]). In addition to data integrity and recovery mechanisms, the module also governs update and migration processes during software updates ([SWS_PER_00357]).

The functional cluster Persistency (ara::per) provides a standardized abstraction layer for non-volatile data storage for the AUTOSAR Adaptive Platform (EXP_SWArchitecture p. 43). It offers two basic access models: the key-based storage KeyValueStorage for structured parameters and the file-based storage FileStorage for unstructured payload data streams (SWS_Persistency p. 219). Both Adaptive Applications and central platform daemons such as State Management, Diagnostic Management, or Update and Configuration Management use these interfaces to store their states persistently, independently of physical file system or flash drivers (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

Context diagram: Embedding of the cluster Persistency into the Adaptive Platform with application and platform consumers as well as the underlying operating system. Sources: EXP_SWArchitecture p. 93, EXP_SWArchitecture p. 43.

Write operations in KeyValueStorage follow strict in-memory transaction semantics ([SWS_PER_00046]). Modifications to key-value pairs initially remain volatilely buffered and are only written permanently to the storage medium via the synchronous call SyncToStorage ([SWS_PER_00049]), whereas DiscardPendingChanges discards unsaved states ([SWS_PER_00365]). In FileStorage, access is performed via specialized, typed accessors (ReadAccessor, WriteAccessor, ReadWriteAccessor), which are managed exclusively via UniqueHandle ([SWS_PER_00113], [SWS_PER_00114], [SWS_PER_00115]).

Transactional key-value storage and physical flushAdaptive Applicationara::per (KeyValueStorage)Betriebssystem / NVRAMSetValue(key, value)Buffer value in RAM (transaction state)Result<void> (Erfolg)altCommit-Pfad (Dauerhaftes Sichern)SyncToStorage()Calculate CRC / redundancy & optional encryptionwrite() / fsync()Status OKResult<void> (Persistiert)Rollback path (discard unsaved changes)DiscardPendingChanges()Discard volatile RAM changesResult<void> (reset)

Sequence diagram: Write and synchronization sequence of a key-value storage with in-memory buffering and physical flush. Sources: [SWS_PER_00046], [SWS_PER_00049], [SWS_PER_00365], EXP_SWArchitecture p. 230.

Furthermore, the module integrates comprehensive mechanisms for lifecycle and fault tolerance: configuration changes during runtime are processed via CheckForManifestUpdate and ReloadPersistencyManifest ([SWS_PER_00576], [SWS_PER_00577]), whereas application-specific data migrations take place via update callbacks ([SWS_PER_00356], [SWS_PER_00357]). If manifest-based redundancy or integrity checks fail, callbacks report the corruption status ([SWS_PER_00433]), whereupon damaged data can be repaired using RecoverKeyValueStorage, RecoverFile, or via reset operations ([SWS_PER_00333], [SWS_PER_00337], [SWS_PER_00334]).

System boundaries and architecture integration of ara::per

The functional cluster Persistency (ara::per) provides standardized abstraction mechanisms for non-volatile data storage on the AUTOSAR Adaptive Platform (EXP_SWArchitecture p. 43). It decouples both user-defined applications and functional platform services from operating-system-specific file systems, partition structures, as well as flash or NVRAM drivers (EXP_SWArchitecture p. 93). The provision comprises two separate primary storage paradigms: key-based data access via KeyValueStorage and hierarchical file storage via FileStorage (SWS_Persistency p. 219). Platform services such as Diagnostic Management (EXP_SWArchitecture p. 176), State Management (EXP_SWArchitecture p. 55), Update and Configuration Management (SWS_UpdateAndConfigurationManagement p. 18), and Remote Persistency (SWS_RemotePersistency p. 9) utilize these interfaces as standardized port interfaces ([SWS_PER_00052], [SWS_PER_00116]).

In addition to providing local storage abstractions, ara::per integrates cryptographic primitives and redundancy checks directly at the interface to the host operating system (EXP_SWArchitecture p. 230). The functional configuration of a persistency storage is modeled declaratively in the AUTOSAR manifest and binds quota specifications, integrity hashes, CRC methods, and cryptographic encryption paths to concrete instances (SWS_Persistency p. 104). Library components of other functional clusters integrate Persistency directly via dedicated target configurations, while daemon processes access storage units via instance specifiers similarly to regular applications (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

Context diagram: Embedding of the cluster Persistency into the Adaptive Platform with application and platform consumers as well as the underlying operating system. Sources: EXP_SWArchitecture p. 93, EXP_SWArchitecture p. 43.

Key-value storage: Instantiation, transaction semantics, and flush mechanisms

Access to structured parameters is performed via class ara::per::KeyValueStorage, which is opened via the call ara::per::OpenKeyValueStorage by specifying a ara::core::InstanceSpecifier ([SWS_PER_00052]). The returned SharedHandle<KeyValueStorage> encapsulates the storage area in a type-safe manner and prevents uncontrolled duplication via deleted move and copy constructors of the base containers ([SWS_PER_00322], [SWS_PER_00324], [SWS_PER_00367]). Key-value pairs are modified or queried via SetValue ([SWS_PER_00046]) and GetValue ([SWS_PER_00044], [SWS_PER_00332]); here, KeyExists ([SWS_PER_00043]) provides the existence check and GetAllKeys ([SWS_PER_00042]) provides the complete listing of all active keys.

Write and erase operations are subject to strict in-memory transaction semantics: changes made via SetValue, RemoveKey ([SWS_PER_00047]), or RemoveAllKeys ([SWS_PER_00048]) initially remain in the volatile buffer of the process (EXP_SWArchitecture p. 230). Only the explicit call of SyncToStorage saves all pending modifications atomically and permanently to the physical data storage medium ([SWS_PER_00049]). If unwritten transaction steps are to be discarded, DiscardPendingChanges resets the state to the status of the last SyncToStorage or of opening ([SWS_PER_00365]). Storage requirements can be monitored via GetCurrentValueSize ([SWS_PER_00554]) for individual values and in aggregated form including redundancy and metadata via GetCurrentKeyValueStorageSize ([SWS_PER_00405]) (EXP_SWArchitecture p. 231).

Transactional key-value storage and physical flushAdaptive Applicationara::per (KeyValueStorage)Betriebssystem / NVRAMSetValue(key, value)Buffer value in RAM (transaction state)Result<void> (Erfolg)altCommit-Pfad (Dauerhaftes Sichern)SyncToStorage()Calculate CRC / redundancy & optional encryptionwrite() / fsync()Status OKResult<void> (Persistiert)Rollback path (discard unsaved changes)DiscardPendingChanges()Discard volatile RAM changesResult<void> (reset)

Sequence diagram: Write and synchronization sequence of a key-value storage with in-memory buffering and physical flush. Sources: [SWS_PER_00046], [SWS_PER_00049], [SWS_PER_00365], EXP_SWArchitecture p. 230.

File-based storage access and typed accessor hierarchies

For unstructured data streams, binary blocks, or log files, the class ara::per::FileStorage is used, which is initialized via ara::per::OpenFileStorage ([SWS_PER_00116]). Within a FileStorage container, existing files can be listed via GetAllFileNames ([SWS_PER_00110]), their existence checked via FileExists ([SWS_PER_00112]), or files removed via DeleteFile ([SWS_PER_00111]). Size quotas are determined via GetCurrentFileSize ([SWS_PER_00407]) and GetCurrentFileStorageSize ([SWS_PER_00406]) (EXP_SWArchitecture p. 231).

The file access itself follows the interface segregation principle via specialized accessor classes (EXP_SWArchitecture p. 88). Depending on the required mode (OpenMode, [SWS_PER_00147], combinable via bitwise operators [SWS_PER_00144], [SWS_PER_00434]), the factory methods create exclusive UniqueHandle instances ([SWS_PER_00371], [SWS_PER_00569]):

Common position and size operations such as GetPosition ([SWS_PER_00162]), SetPosition ([SWS_PER_00163]), relative navigation using MovePosition and enumeration Origin ([SWS_PER_00146], [SWS_PER_00164]), GetSize ([SWS_PER_00424]), and the end-of-file check IsEof ([SWS_PER_00107]) are anchored in the common base class FileAccessor. Extended file metadata such as timestamps and creation causes are read via GetFileInfo and the struct 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]). Interpretation: Apart from type safety, the strict separation into non-copyable accessor instances is presumably primarily intended to deterministically prevent concurrent write conflicts at the operating system level. Question Q-a990a7aa44326447 (open)

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

Structure diagram: Interface and class hierarchy of the file access classes and accessor handles. Sources: [SWS_PER_00113], [SWS_PER_00114], [SWS_PER_00115], EXP_SWArchitecture p. 88.

Lifecycle management, update sequences, and manifest synchronization

For software updates and new installations performed by Update and Configuration Management (UCM), Persistency offers dedicated lifecycle operations (EXP_SWArchitecture p. 92). If an updated target configuration is deployed during the runtime of an application, the application can determine via CheckForManifestUpdate whether configuration changes exist ([SWS_PER_00576]). With ReloadPersistencyManifest, ara::per rereads the updated configuration, after which modified storage definitions become active following the next closing and reopening ([SWS_PER_00577]).

To migrate existing application data, a callback function is registered via RegisterApplicationDataUpdateCallback, which is triggered by ara::per when data migration is required based on differing contract version statuses ([SWS_PER_00356]). Selective changes to individual elements can be monitored via RegisterDataUpdateIndication ([SWS_PER_00578]). The overall persistency update process is initiated during the verification phase by UpdatePersistency ([SWS_PER_00357]). After a successful update, CleanUpPersistency removes obsolete backup and migration data ([SWS_PER_00567]), while ResetPersistency empties the storage areas completely so that they are recreated initially from the manifest upon the next opening ([SWS_PER_00358]).

Manifest update and data migrationAdaptive Applicationara::per (Persistency)UCM / ManifestCheckForManifestUpdate()Result<bool> (update available)optManifest-Aktualisierung erkanntReloadPersistencyManifest()Lese neue Target-ConfigurationKonfiguration geladenResult<void>UpdatePersistency()Callback: appDataUpdateCallback(storage, version)Migriere anwendungsspezifische DatenMigration abgeschlossenResult<void> (UpdatePersistency OK)CleanUpPersistency()Delete temporary backup and obsolete dataResult<void> (Bereinigt)

Sequence diagram: Sequence of a persistency update with configuration check, callback migration, and cleanup. Sources: [SWS_PER_00356], [SWS_PER_00357], [SWS_PER_00567], [SWS_PER_00576], [SWS_PER_00577], EXP_SWArchitecture p. 92.

Integrity monitoring, redundancy handling, and recovery

To intercept corrupted data records, key-value and file storages support configurable redundancy copies and integrity mechanisms (CRC, hash, MAC authentication, and encryption) (SWS_Persistency p. 104, EXP_SWArchitecture p. 230). If internal redundancy checks fail, safety-relevant applications can be informed via RegisterRecoveryReportCallback ([SWS_PER_00433]). The callback transmits the RecoveryReportKind (e.g., kKeyValueStorageRecoveryFailed) as well as affected instances and key/file names ([SWS_PER_00432], EXP_SWArchitecture p. 91).

Granular repair and reset methods are available for targeted recovery of damaged data:

PerRecoveryFlow Start Data access or integrity check Check Redundancy/integrity check (CRC, hash, MAC, copies) Start->Check Report Trigger RegisterRecoveryReportCallback (RecoveryReportKind gemeldet) Check->Report Fehler Success Storage in consistent state again Check->Success OK Decide Wiederherstellungsstrategie? Report->Decide RecoverStorage RecoverKeyValueStorage() / RecoverAllFiles() Decide->RecoverStorage Complete container recovery RecoverSingle RecoverKey() / RecoverFile() (Best-Effort) Decide->RecoverSingle Einzelwert-Reparatur ResetDefault ResetKeyValueStorage() / ResetAllFiles() (Werkswerte) Decide->ResetDefault Reset to init state RecoverStorage->Success RecoverSingle->Success ResetDefault->Success

Activity diagram: Decision path in case of data corruption from redundancy check via callbacks to recovery or reset. Sources: [SWS_PER_00333], [SWS_PER_00334], [SWS_PER_00432], [SWS_PER_00433].

Behavior in the event of an error

Error states are not propagated via uncontrolled C++ exceptions in ara::per, but are mapped deterministically via the return type ara::core::Result ([SWS_PER_00044], [SWS_PER_00113]). The module defines its own error domain via GetPerDomain ([SWS_PER_00352]), implemented by PerErrorDomain with standardized error resolution via Name ([SWS_PER_00314]) and Message ([SWS_PER_00315]) as well as the enumeration PerErrc or the type alias Errc ([SWS_PER_00311], [SWS_PER_00411]). For environments with exceptions enabled, PerException ([SWS_PER_00355], [SWS_PER_00412]) and ThrowAsException ([SWS_PER_00350]) are available, while MakeErrorCode encapsulates the creation of platform-compliant error codes ([SWS_PER_00351]).

Typical error codes cover resource- and concurrency-related conflicts: operations such as OpenKeyValueStorage ([SWS_PER_00052]), OpenFileStorage ([SWS_PER_00116]), DeleteFile ([SWS_PER_00111]), or RecoverKeyValueStorage ([SWS_PER_00333]) fail with kResourceBusy if the storage element in question is already open or is being modified concurrently by maintenance operations such as UpdatePersistency. When assigning incompatible types, SetValue reports the error kDataTypeMismatch ([SWS_PER_00046]). In the event of physical hardware errors (PerErrc::kPhysical), a distinction is made between whether rollback semantics exist (e.g. for read and position operations such as [SWS_PER_00167], [SWS_PER_00168], where the pointers remain unchanged) or whether data corruption can occur without a rollback guarantee (e.g. for [SWS_PER_00122], [SWS_PER_00166], [SWS_PER_00423]).

To diagnose synchronization and access errors, the module generates standardized DLT log messages (SWS_Persistency p. 110). Here, messages such as SyncToStorage (message ID 0x80008037), SyncToFile (0x80008036), and DiscardPendingChanges (0x80008038) log affected key sets and memory allocations in detail, ensuring that the state remains reconstructible even after an incomplete shutdown (e.g. via ara::core::Deinitialize) (SWS_Persistency p. 110).

Further detailed evidence

The architecture and interaction of the persistence cluster are based on the following normative specifications and document references:

This module guide is based on the specifications of the AUTOSAR Adaptive release R25-11. The statements are based exclusively on the mandatory SWS requirements and the assigned architecture documents.

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 of ReadAccessor, WriteAccessor

FileInfo class

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.

inherits from ara::core::ErrorDomain

Exception type thrown by Persistency.

inherits from ara::core::Exception

ReadAccessor is used to read file data

inherits from FileAccessor

base of ReadWriteAccessor

ReadWriteAccessor is used to read and write file data

inherits from ReadAccessor, WriteAccessor

Handle to a File Storage or Key-Value Storage

Handle to a ReadAccessor or ReadWriteAccessor

WriteAccessor is used to write file data

inherits from FileAccessor

base of 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 function

Returns the global PerErrorDomain object.

constexpr const ara::core::ErrorDomain & GetPerDomain () noexcept;
MakeErrorCode function

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| function

Merges two OpenMode modifiers into one.

constexpr OpenMode operator| (OpenMode left, OpenMode right);
operator|= function

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 function

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 enumeration

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 enumeration

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 enumeration

Specification of origin used in MovePosition.

enum class Origin : std::uint32_t {...};
PerErrc enumeration

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 enumeration

Defines the reported recovery actions.

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

Namespaces

UML class diagram of the module

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