DEENESPTFRRUARHIKOZHNL

модуль ara::per — Persistency

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

Руководство по модулюСОЗДАНО ИИ

Обеспечивает персистентное, транзакционно-безопасное и аппаратно-абстрагированное сохранение структурированных пар «ключ-значение» и файлов.
СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 5a09fccb0066 Происхождение Открытые вопросы (1)
Причинный якорь: R25-11 Действует с R25-11 Заново синтезировано для этой версии спецификации.
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Обеспечивает персистентное, транзакционно-безопасное и аппаратно-абстрагированное сохранение структурированных пар «ключ-значение» и файлов.

Адаптивный модуль Persistency (ara::per) предоставляет аппаратно-независимый уровень абстракции для энергонезависимого хранения данных, который охватывает как структурированные хранилища «ключ-значение» (KeyValueStorage), так и файловый доступ (FileStorage) (EXP_SWArchitecture с. 43). Модификации пар «ключ-значение» подлежат буферизации в оперативной памяти и требуют явного вызова синхронизации (SyncToStorage) для долговременного сохранения ([SWS_PER_00049]). Помимо механизмов целостности данных и восстановления, модуль также регулирует процессы обновления и миграции при обновлении программного обеспечения ([SWS_PER_00357]).

Функциональный кластер Persistency (ara::per) предоставляет для AUTOSAR Adaptive Platform стандартизированный уровень абстракции для энергонезависимого хранения данных (EXP_SWArchitecture с. 43). Он предлагает две базовые модели доступа: хранилище на основе ключей KeyValueStorage для структурированных параметров, а также файловое хранилище FileStorage для неструктурированных потоков полезных данных (SWS_Persistency с. 219). Как Adaptive Applications, так и центральные демоны платформы, такие как State Management, Diagnostic Management или Update and Configuration Management, используют эти интерфейсы для персистентного сохранения своих состояний независимо от физических файловых систем или драйверов флэш-памяти (EXP_SWArchitecture с. 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

Контекстная диаграмма: встраивание кластера Persistency в Adaptive Platform с потребителями приложений и платформы, а также нижележащей операционной системой. Источники: EXP_SWArchitecture с. 93, EXP_SWArchitecture с. 43.

Операции записи в KeyValueStorage следуют строгой транзакционной семантике в оперативной памяти ([SWS_PER_00046]). Модификации пар «ключ-значение» изначально остаются временно буферизованными и записываются на постоянный носитель данных только через синхронный вызов SyncToStorage ([SWS_PER_00049]), в то время как DiscardPendingChanges отбрасывает несохраненные состояния ([SWS_PER_00365]). В FileStorage доступ осуществляется через специализированные типизированные аксессоры (ReadAccessor, WriteAccessor, ReadWriteAccessor), управляемые исключительно через UniqueHandle ([SWS_PER_00113], [SWS_PER_00114], [SWS_PER_00115]).

Транзакционное хранение пар «ключ-значение» и физический сброс на дискAdaptive Applicationara::per (KeyValueStorage)Betriebssystem / NVRAMSetValue(key, value)Буферизовать значение в RAM (состояние транзакции)Result<void> (Erfolg)altCommit-Pfad (Dauerhaftes Sichern)SyncToStorage()Вычисление CRC / избыточности & опциональное шифрованиеwrite() / fsync()Status OKResult<void> (Persistiert)Путь отката (сброс несохраненных изменений)DiscardPendingChanges()Сброс энергозависимых изменений в RAMResult<void> (сброшено)

Диаграмма последовательности: процесс записи и синхронизации хранилища «ключ-значение» с буферизацией в оперативной памяти и физическим сбросом (flush). Источники: [SWS_PER_00046], [SWS_PER_00049], [SWS_PER_00365], EXP_SWArchitecture с. 230.

Кроме того, модуль интегрирует комплексные механизмы для жизненного цикла и отказоустойчивости: изменения конфигурации во время выполнения обрабатываются через CheckForManifestUpdate и ReloadPersistencyManifest ([SWS_PER_00576], [SWS_PER_00577]), в то время как специфичные для приложений миграции данных осуществляются через колбэки обновления ([SWS_PER_00356], [SWS_PER_00357]). В случае сбоя проверок избыточности или целостности на основе манифеста колбэки информируют о статусе повреждения ([SWS_PER_00433]), после чего поврежденные данные могут быть восстановлены с помощью RecoverKeyValueStorage, RecoverFile или посредством операций сброса ([SWS_PER_00333], [SWS_PER_00337], [SWS_PER_00334]).

Системные границы и архитектурная интеграция ara::per

Функциональный кластер Persistency (ara::per) предоставляет стандартизированные механизмы абстракции для энергонезависимого хранения данных на AUTOSAR Adaptive Platform (EXP_SWArchitecture с. 43). Он отделяет как пользовательские приложения, так и функциональные службы платформы от зависимых от операционной системы файловых систем, структур разделов, а также драйверов флэш-памяти или NVRAM (EXP_SWArchitecture с. 93). Предоставление охватывает две раздельные основные парадигмы хранения: доступ к данным на основе ключей через KeyValueStorage, а также иерархическое хранилище файлов через FileStorage (SWS_Persistency с. 219). Службы платформы, такие как Diagnostic Management (EXP_SWArchitecture с. 176), State Management (EXP_SWArchitecture с. 55), Update and Configuration Management (SWS_UpdateAndConfigurationManagement с. 18) и Remote Persistency (SWS_RemotePersistency с. 9), используют эти интерфейсы в качестве стандартизированных портовых интерфейсов ([SWS_PER_00052], [SWS_PER_00116]).

В дополнение к предоставлению локальных абстракций хранения ara::per интегрирует криптографические примитивы и проверки избыточности непосредственно на интерфейсе к хост-операционной системе (EXP_SWArchitecture с. 230). Функциональная конфигурация персистентного хранилища декларативно моделируется в манифесте AUTOSAR и привязывает параметры квот, хэши целостности, процедуры CRC, а также пути криптографического шифрования к конкретным экземплярам (SWS_Persistency с. 104). Компоненты библиотек других функциональных кластеров подключают персистентность напрямую через собственные Target-Configurations, тогда как процессы-демоны аналогично обычным приложениям обращаются к единицам хранения через Instance-Specifier (SWS_Persistency с. 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

Контекстная диаграмма: встраивание кластера Persistency в Adaptive Platform с потребителями приложений и платформы, а также нижележащей операционной системой. Источники: EXP_SWArchitecture с. 93, EXP_SWArchitecture с. 43.

Хранилище «ключ-значение»: инстанцирование, транзакционная семантика и механизмы сброса (Flush)

Доступ к структурированным параметрам осуществляется через класс ara::per::KeyValueStorage, который открывается вызовом ara::per::OpenKeyValueStorage с указанием ara::core::InstanceSpecifier ([SWS_PER_00052]). Возвращенный SharedHandle<KeyValueStorage> типобезопасно инкапсулирует область памяти и предотвращает неконтролируемое дублирование за счет удаленных конструкторов перемещения и копирования базовых контейнеров ([SWS_PER_00322], [SWS_PER_00324], [SWS_PER_00367]). Через SetValue ([SWS_PER_00046]) и GetValue ([SWS_PER_00044], [SWS_PER_00332]) пары «ключ-значение» модифицируются или запрашиваются; при этом KeyExists ([SWS_PER_00043]) обеспечивает проверку существования, а GetAllKeys ([SWS_PER_00042]) — полное перечисление всех активных ключей.

Операции записи и удаления подчиняются строгой транзакционной семантике в оперативной памяти: изменения, вносимые SetValue, RemoveKey ([SWS_PER_00047]) или RemoveAllKeys ([SWS_PER_00048]), изначально остаются во временном буфере процесса (EXP_SWArchitecture с. 230). Только явный вызов SyncToStorage сохраняет все ожидающие модификации атомарно и персистентно на физический носитель данных ([SWS_PER_00049]). Если еще не записанные шаги транзакции требуется отбросить, DiscardPendingChanges сбрасывает состояние до момента последнего SyncToStorage или открытия ([SWS_PER_00365]). Потребность в памяти можно отслеживать через GetCurrentValueSize ([SWS_PER_00554]) для отдельных значений, а также агрегированно, включая данные избыточности и метаданные, через GetCurrentKeyValueStorageSize ([SWS_PER_00405]) (EXP_SWArchitecture с. 231).

Транзакционное хранение пар «ключ-значение» и физический сброс на дискAdaptive Applicationara::per (KeyValueStorage)Betriebssystem / NVRAMSetValue(key, value)Буферизовать значение в RAM (состояние транзакции)Result<void> (Erfolg)altCommit-Pfad (Dauerhaftes Sichern)SyncToStorage()Вычисление CRC / избыточности & опциональное шифрованиеwrite() / fsync()Status OKResult<void> (Persistiert)Путь отката (сброс несохраненных изменений)DiscardPendingChanges()Сброс энергозависимых изменений в RAMResult<void> (сброшено)

Диаграмма последовательности: процесс записи и синхронизации хранилища «ключ-значение» с буферизацией в оперативной памяти и физическим сбросом (flush). Источники: [SWS_PER_00046], [SWS_PER_00049], [SWS_PER_00365], EXP_SWArchitecture с. 230.

Файловый доступ к хранилищу и типизированные иерархии аксессоров

Для неструктурированных потоков данных, бинарных блоков или файлов журналов служит класс ara::per::FileStorage, который инициализируется через ara::per::OpenFileStorage ([SWS_PER_00116]). Внутри контейнера FileStorage существующие файлы можно перечислить через GetAllFileNames ([SWS_PER_00110]), проверить их существование через FileExists ([SWS_PER_00112]) или удалить файлы через DeleteFile ([SWS_PER_00111]). Квоты размера определяются через GetCurrentFileSize ([SWS_PER_00407]) и GetCurrentFileStorageSize ([SWS_PER_00406]) (EXP_SWArchitecture с. 231).

Сам доступ к файлам следует принципу разделения интерфейсов через специализированные классы аксессоров (EXP_SWArchitecture с. 88). В зависимости от требуемого режима (OpenMode, [SWS_PER_00147], комбинируемых с помощью побитовых операторов [SWS_PER_00144], [SWS_PER_00434]) фабричные методы создают эксклюзивные экземпляры UniqueHandle ([SWS_PER_00371], [SWS_PER_00569]):

Общие операции позиционирования и определения размера, такие как GetPosition ([SWS_PER_00162]), SetPosition ([SWS_PER_00163]), относительная навигация с помощью MovePosition и перечисления Origin ([SWS_PER_00146], [SWS_PER_00164]), GetSize ([SWS_PER_00424]), а также проверка конца файла IsEof ([SWS_PER_00107]), закреплены в общем базовом классе FileAccessor. Расширенные метаданные файла, такие как временные метки и причины создания, считываются через GetFileInfo и структуру 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]). Интерпретация: строгое разделение на некопируемые экземпляры аксессоров, помимо типобезопасности, вероятно, служит главным образом для детерминированного предотвращения конфликтов параллельной записи на уровне операционной системы. Вопрос Q-a990a7aa44326447 (открытый)

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

Диаграмма структуры: иерархия интерфейсов и классов для классов файлового доступа и дескрипторов аксессоров. Источники: [SWS_PER_00113], [SWS_PER_00114], [SWS_PER_00115], EXP_SWArchitecture с. 88.

Управление жизненным циклом, процессы обновления и синхронизация манифеста

Для обновлений программного обеспечения и новых установок с помощью Update and Configuration Management (UCM) Persistency предоставляет специализированные операции жизненного цикла (EXP_SWArchitecture с. 92). Если во время выполнения приложения развертывается обновленная целевая конфигурация, приложение может с помощью CheckForManifestUpdate определить наличие изменений конфигурации ([SWS_PER_00576]). С помощью ReloadPersistencyManifest ara::per повторно считывает обновленную конфигурацию, после чего измененные определения хранилища активируются после следующего закрытия и повторного открытия ([SWS_PER_00577]).

Для миграции существующих данных приложения через RegisterApplicationDataUpdateCallback регистрируется функция обратного вызова, которая инициируется ara::per, если на основе несовпадающих версий контракта требуется миграция данных ([SWS_PER_00356]). Точечные изменения отдельных элементов можно отслеживать с помощью RegisterDataUpdateIndication ([SWS_PER_00578]). Общий процесс обновления персистентности запускается во время фазы верификации через UpdatePersistency ([SWS_PER_00357]). После успешного обновления CleanUpPersistency удаляет устаревшие данные резервных копий и миграции ([SWS_PER_00567]), тогда как ResetPersistency полностью очищает области хранилища, так что при следующем открытии они создаются заново исходно из манифеста ([SWS_PER_00358]).

Обновление манифеста и миграция данныхAdaptive Applicationara::per (Persistency)UCM / ManifestCheckForManifestUpdate()Result<bool> (доступно обновление)optManifest-Aktualisierung erkanntReloadPersistencyManifest()Lese neue Target-ConfigurationKonfiguration geladenResult<void>UpdatePersistency()Callback: appDataUpdateCallback(storage, version)Migriere anwendungsspezifische DatenMigration abgeschlossenResult<void> (UpdatePersistency OK)CleanUpPersistency()Удаление временных резервных копий и устаревших данныхResult<void> (Bereinigt)

Диаграмма последовательности: процесс обновления персистентности с проверкой конфигурации, миграцией через callback и очисткой. Источники: [SWS_PER_00356], [SWS_PER_00357], [SWS_PER_00567], [SWS_PER_00576], [SWS_PER_00577], EXP_SWArchitecture с. 92.

Мониторинг целостности, обработка избыточности и восстановление

Для перехвата поврежденных наборов данных хранилища «ключ-значение» и файлов поддерживают конфигурируемые копии избыточности и механизмы целостности (CRC, хэш, MAC-аутентификацию и шифрование) (SWS_Persistency с. 104, EXP_SWArchitecture с. 230). При сбое внутренних проверок избыточности критически важные для безопасности приложения могут быть проинформированы через RegisterRecoveryReportCallback ([SWS_PER_00433]). Callback передает RecoveryReportKind (например, kKeyValueStorageRecoveryFailed), а также затронутые экземпляры и ключи/имена файлов ([SWS_PER_00432], EXP_SWArchitecture с. 91).

Для целенаправленного восстановления поврежденных данных доступны гранулярные методы исправления и сброса:

  • Восстановление: на уровне хранилища RecoverKeyValueStorage ([SWS_PER_00333]) и RecoverAllFiles ([SWS_PER_00335]) позволяют выполнять исправление закрытых контейнеров; на уровне элементов RecoverKey ([SWS_PER_00427]) и RecoverFile ([SWS_PER_00337]) восстанавливают отдельные поврежденные записи по принципу наилучших усилий (best-effort).
  • Сброс к заводским значениям: через ResetKeyValueStorage ([SWS_PER_00334]) и ResetAllFiles ([SWS_PER_00336]) контейнеры могут быть сброшены до состояния исходной поставки; аналогично ResetKey ([SWS_PER_00426]) или ResetFile ([SWS_PER_00338]) переводят отдельные элементы в их сконфигурированное исходное состояние.
PerRecoveryFlow Start Доступ к данным или проверка целостности Check Проверка избыточности/целостности (CRC, хеш, MAC, копии) Start->Check Report Trigger RegisterRecoveryReportCallback (RecoveryReportKind gemeldet) Check->Report Fehler Success Память снова в согласованном состоянии Check->Success OK Decide Wiederherstellungsstrategie? Report->Decide RecoverStorage RecoverKeyValueStorage() / RecoverAllFiles() Decide->RecoverStorage Полное исправление контейнера RecoverSingle RecoverKey() / RecoverFile() (Best-Effort) Decide->RecoverSingle Einzelwert-Reparatur ResetDefault ResetKeyValueStorage() / ResetAllFiles() (Werkswerte) Decide->ResetDefault Возврат к начальному состоянию RecoverStorage->Success RecoverSingle->Success ResetDefault->Success

Диаграмма деятельности: путь принятия решений при повреждении данных от проверки избыточности через callbacks до восстановления или сброса. Источники: [SWS_PER_00333], [SWS_PER_00334], [SWS_PER_00432], [SWS_PER_00433].

Поведение при ошибке

Состояния ошибок в ara::per распространяются не через неконтролируемые исключения C++, а детерминированно отображаются через тип возвращаемого значения ara::core::Result ([SWS_PER_00044], [SWS_PER_00113]). Модуль определяет собственный домен ошибок через GetPerDomain ([SWS_PER_00352]), реализованный с помощью PerErrorDomain со стандартизированным разрешением ошибок через Name ([SWS_PER_00314]) и Message ([SWS_PER_00315]), а также перечисление PerErrc или псевдоним типа Errc ([SWS_PER_00311], [SWS_PER_00411]). Для сред с включенными исключениями доступны PerException ([SWS_PER_00355], [SWS_PER_00412]) и ThrowAsException ([SWS_PER_00350]), тогда как MakeErrorCode инкапсулирует создание платформо-совместимых кодов ошибок ([SWS_PER_00351]).

Типичные коды ошибок охватывают конфликты, связанные с ресурсами и конкурентностью: такие операции, как OpenKeyValueStorage ([SWS_PER_00052]), OpenFileStorage ([SWS_PER_00116]), DeleteFile ([SWS_PER_00111]) или RecoverKeyValueStorage ([SWS_PER_00333]), завершаются сбоем с kResourceBusy, если соответствующий элемент хранилища уже открыт или параллельно модифицируется операциями обслуживания, такими как UpdatePersistency. При присвоении несовместимых типов SetValue сообщает об ошибке kDataTypeMismatch ([SWS_PER_00046]). При физических аппаратных ошибках (PerErrc::kPhysical) дифференцируется, присутствует ли семантика отката (например, при операциях чтения и позиционирования, таких как [SWS_PER_00167], [SWS_PER_00168], где указатели остаются неизменными) или может произойти повреждение данных без гарантии отката (например, при [SWS_PER_00122], [SWS_PER_00166], [SWS_PER_00423]).

Для диагностики ошибок синхронизации и доступа модуль генерирует стандартизированные сообщения протокола DLT (SWS_Persistency с. 110). При этом такие сообщения, как SyncToStorage (Message-ID 0x80008037), SyncToFile (0x80008036) и DiscardPendingChanges (0x80008038), подробно регистрируют затронутые наборы ключей и распределение памяти, благодаря чему даже при неполном завершении работы (например, через ara::core::Deinitialize) состояние остается восстановимым (SWS_Persistency с. 110).

Дальнейшие подробные доказательства

Архитектура и взаимодействие кластера персистентности опираются на следующие нормативные требования и положения документов:

Данное руководство по модулю основано на спецификациях релиза AUTOSAR Adaptive R25-11. Утверждения опираются исключительно на обязательные требования SWS и связанные с ними архитектурные документы.

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

ara::per

FileAccessor класс

FileAccessor contains a common basis for ReadAccessor and WriteAccessor

база для ReadAccessor, WriteAccessor

FileInfo класс

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

FileStorage класс

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

KeyValueStorage класс

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

PerErrorDomain класс

Defines the error domain for Persistency.

наследует от ara::core::ErrorDomain

PerException класс

Exception type thrown by Persistency.

наследует от ara::core::Exception

ReadAccessor класс

ReadAccessor is used to read file data

наследует от FileAccessor

база для ReadWriteAccessor

ReadWriteAccessor is used to read and write file data

наследует от ReadAccessor, WriteAccessor

SharedHandle класс

Handle to a File Storage or Key-Value Storage

UniqueHandle класс

Handle to a ReadAccessor or ReadWriteAccessor

WriteAccessor класс

WriteAccessor is used to write file data

наследует от FileAccessor

база для ReadWriteAccessor

CheckForManifestUpdate функция

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;
CleanUpPersistency функция

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 функция

Returns the global PerErrorDomain object.

constexpr const ara::core::ErrorDomain & GetPerDomain () noexcept;
MakeErrorCode функция

Creates an error code.

constexpr ara::core::ErrorCode MakeErrorCode (PerErrc code, ara::core::ErrorDomain::SupportDataType data) noexcept;
OpenFileStorage функция

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;
OpenKeyValueStorage функция

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| функция

Merges two OpenMode modifiers into one.

constexpr OpenMode operator| (OpenMode left, OpenMode right);
operator|= функция

Merges an OpenMode modifier into this OpenMode.

OpenMode & operator|= (OpenMode &left, const OpenMode &right);
RecoverAllFiles функция

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;
RecoverKeyValueStorage функция

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 функция

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;
ResetKeyValueStorage функция

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;
ResetPersistency функция

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;
UpdatePersistency функция

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 перечисление

This enumeration describes how and when a file was created.

enum class FileCreationState : std::uint32_t {...};
FileModificationState перечисление

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

enum class FileModificationState : std::uint32_t {...};
OpenMode перечисление

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 перечисление

Specification of origin used in MovePosition.

enum class Origin : std::uint32_t {...};
PerErrc перечисление

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 перечисление

Defines the reported recovery actions.

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

Пространства имён

UML-диаграмма классов модуля

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