модуль ara::per — Persistency
Руководство по модулюСОЗДАНО ИИ
Обеспечивает персистентное, транзакционно-безопасное и аппаратно-абстрагированное сохранение структурированных пар «ключ-значение» и файлов.
Обеспечивает персистентное, транзакционно-безопасное и аппаратно-абстрагированное сохранение структурированных пар «ключ-значение» и файлов.
Адаптивный модуль 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).
Контекстная диаграмма: встраивание кластера 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]).
Диаграмма последовательности: процесс записи и синхронизации хранилища «ключ-значение» с буферизацией в оперативной памяти и физическим сбросом (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).
Контекстная диаграмма: встраивание кластера 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).
Диаграмма последовательности: процесс записи и синхронизации хранилища «ключ-значение» с буферизацией в оперативной памяти и физическим сбросом (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]):
OpenFileReadOnly([SWS_PER_00114], [SWS_PER_00376], [SWS_PER_00430]): возвращаетUniqueHandle<ReadAccessor>для операций чтения, таких какReadText([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]) иPeekByte([SWS_PER_00418]).OpenFileWriteOnly([SWS_PER_00115], [SWS_PER_00377], [SWS_PER_00431]): возвращаетUniqueHandle<WriteAccessor>для операций записи черезWriteText([SWS_PER_00166]),WriteBinary([SWS_PER_00423]), удобные потоковые операторы ([SWS_PER_00125]), усечение файла черезSetFileSize([SWS_PER_00428]), а также физическую очистку черезSyncToFile([SWS_PER_00122]).OpenFileReadWrite([SWS_PER_00113], [SWS_PER_00375], [SWS_PER_00429]): объединяет возможности чтения и записи в одномUniqueHandle<ReadWriteAccessor>.
Общие операции позиционирования и определения размера, такие как 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 (открытый)
Диаграмма структуры: иерархия интерфейсов и классов для классов файлового доступа и дескрипторов аксессоров. Источники: [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]).
Диаграмма последовательности: процесс обновления персистентности с проверкой конфигурации, миграцией через 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]) переводят отдельные элементы в их сконфигурированное исходное состояние.
Диаграмма деятельности: путь принятия решений при повреждении данных от проверки избыточности через 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).
Дальнейшие подробные доказательства
Архитектура и взаимодействие кластера персистентности опираются на следующие нормативные требования и положения документов:
- Архитектурные интерфейсы и связь кластеров: предоставление
KeyValueStorageиFileStorageвышестоящим демонам платформы закреплено в EXP_SWArchitecture с. 90, EXP_SWArchitecture с. 87, EXP_SWArchitecture с. 55 (State Management), EXP_SWArchitecture с. 145 (VUCM), EXP_SWArchitecture с. 176 (DM) и SWS_RemotePersistency с. 9. - Расчет памяти и контроль квот: определение выделенных объемов на уровне контейнеров и файлов опирается на [SWS_PER_00405], [SWS_PER_00406], [SWS_PER_00407], а также соответствующие сценарии взаимодействия в EXP_SWArchitecture с. 231 и EXP_SWArchitecture с. 231.
- Транзакционная целостность и криптографическая привязка: двухфазный процесс фиксации через управление в оперативной памяти и защита с помощью Cryptography Stack основаны на [SWS_PER_00049], [SWS_PER_00365] и EXP_SWArchitecture с. 230.
- Фреймворк обновления и миграции: координация обновлений программного обеспечения и перезагрузок манифеста специфицируется в [SWS_PER_00356], [SWS_PER_00357], [SWS_PER_00567], [SWS_PER_00576], [SWS_PER_00577] и EXP_SWArchitecture с. 92.
Данное руководство по модулю основано на спецификациях релиза AUTOSAR Adaptive R25-11. Утверждения опираются исключительно на обязательные требования SWS и связанные с ними архитектурные документы.
function: 116 class: 10 enumeration: 6 variable: 5 type alias: 2 struct: 1
Классы
FileAccessorFileInfoFileStorageKeyValueStoragePerErrorDomainPerExceptionReadAccessorReadWriteAccessorSharedHandleUniqueHandleWriteAccessorФункции
CheckForManifestUpdateCleanUpPersistencyGetCurrentFileStorageSizeGetCurrentKeyValueStorageSizeGetPerDomainMakeErrorCodeOpenFileStorageOpenKeyValueStorageoperator|operator|=RecoverAllFilesRecoverKeyValueStorageRegisterApplicationDataUpdateCallbackRegisterDataUpdateIndicationRegisterRecoveryReportCallbackReloadPersistencyManifestResetAllFilesResetKeyValueStorageResetPersistencyUpdatePersistencyПеречисления
FileCreationStateFileModificationStateOpenModeOriginPerErrcRecoveryReportKindКарта тем
ara::per
37Для этого релиза нет данных об элементах
ara::per
FileAccessor contains a common basis for ReadAccessor and WriteAccessor
база для 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.
наследует от ara::core::ErrorDomain
Exception type thrown by Persistency.
наследует от ara::core::Exception
ReadWriteAccessor is used to read and write file data
наследует от 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 {...};Пространства имён
- ara::per 11 Klassen, 20 freie Funktionen
UML-диаграмма классов модуля
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 · Немецкий оригинал