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 · الأصل الألماني

يؤمن أزواج المفتاح والقيمة والملفات المهيكلة بشكل دائم، وآمن للمعاملات، ومجرد عن العتاد.

توفر وحدة Adaptive المسماة 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 وعمليات الخدمات الخلفية المركزية للمنصة (Platform-Daemons) مثل State Management أو Diagnostic Management أو Update and Configuration Management هذه الواجهات لحفظ حالاتها بشكل دائم بصورة مستقلة عن أنظمة الملفات المادية أو برامج تشغيل ذاكرة Flash (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 دلالات معاملات صارمة داخل الذاكرة (In-Memory) ([SWS_PER_00046]). تظل التعديلات على أزواج المفتاح والقيمة مخزنة مؤقتًا بشكل متطاير في البداية ولا تتم كتابتها بشكل دائم على وسيط التخزين إلا عبر الاستدعاء المتزامن SyncToStorage ([SWS_PER_00049])، بينما يتجاهل DiscardPendingChanges الحالات غير المحفوظة ([SWS_PER_00365]). وفي FileStorage، يتم الوصول عبر أدوات وصول (Accessors) متخصصة ومحددة النوع (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()تجاهل تغييرات RAM المؤقتةResult<void> (تمت إعادة الضبط)

مخطط تسلسلي: تسلسل الكتابة والمزامنة لمخزن المفتاح والقيمة مع التخزين المؤقت في الذاكرة والتفريغ المادي (Flush). المصادر: [SWS_PER_00046]، [SWS_PER_00049]، [SWS_PER_00365]، EXP_SWArchitecture ص. 230.

علاوة على ذلك، تدمج الوحدة آليات شاملة لدورة الحياة والتسامح مع الأخطاء: تتم معالجة تغييرات التكوين أثناء وقت التشغيل عبر CheckForManifestUpdate وReloadPersistencyManifest ([SWS_PER_00576]، [SWS_PER_00577])، بينما يتم ترحيل البيانات الخاص بالتطبيق عبر دوال رد نداء التحديث (Update-Callbacks) ([SWS_PER_00356]، [SWS_PER_00357]). وإذا فشلت فحوصات التكرار (Redundancy) أو التكامل القائمة على البيان (Manifest)، فإن دوال رد النداء تبلغ عن حالة التلف ([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). وتقوم بفصل كل من التطبيقات المحددة من قبل المستخدم وخدمات المنصة الوظيفية عن أنظمة الملفات الخاصة بنظام التشغيل، وبنى الأقسام، بالإضافة إلى برامج تشغيل Flash أو 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) هذه الواجهات كواجهات منافذ (Port-Interfaces) قياسية ([SWS_PER_00052]، [SWS_PER_00116]).

بالإضافة إلى توفير تجريدات التخزين المحلية، يدمج ara::per البدائيات التشفيرية وفحوصات التكرار مباشرة عند الواجهة مع نظام التشغيل المضيف (EXP_SWArchitecture ص. 230). وتتم نمذجة التكوين الوظيفي لمخزن الثبات تصريحيًا في بيان AUTOSAR ويربط محددات الحصص (Quota)، وتجزئات التكامل، وإجراءات CRC، بالإضافة إلى مسارات التشفير بمثيلات محددة (SWS_Persistency ص. 104). وتربط أجزاء المكتبة الخاصة بمجموعات وظيفية أخرى ميزة الثبات مباشرة عبر تكوينات الهدف (Target-Configurations) الخاصة بها، بينما تصل عمليات الديمون (Daemon-Prozesse) إلى وحدات التخزين عبر 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]) سردًا كاملاً لجميع المفاتيح النشطة.

تخضع عمليات الكتابة والحذف لدلالات معاملات صارمة داخل الذاكرة (In-Memory): تظل التغييرات الناتجة عن 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()تجاهل تغييرات RAM المؤقتةResult<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).

يتبع الوصول إلى الملفات نفسه مبدأ فصل الواجهات عبر فئات أدوات وصول (Accessors) متخصصة (EXP_SWArchitecture ص. 88). واعتمادًا على الوضع المطلوب (OpenMode، [SWS_PER_00147]، القابل للدمج عبر العوامل البتية [SWS_PER_00144]، [SWS_PER_00434])، تُنشئ أساليب المصنع (Factory methods) مثيلات 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.

إدارة دورة الحياة، وسير عمليات التحديث، ومزامنة البيان (Manifest)

لتحديثات البرمجيات والتثبيتات الجديدة بواسطة Update and Configuration Management (UCM)، يوفّر Persistency عمليات دورة حياة مخصصة (EXP_SWArchitecture ص. 92). وإذا طُبِّق تكوين مستهدف محدَّث أثناء وقت تشغيل أحد التطبيقات، فيمكن للتطبيق عبر CheckForManifestUpdate التحقق مما إذا كانت هناك تغييرات في التكوين ([SWS_PER_00576]). وبواسطة ReloadPersistencyManifest، يعيد ara::per قراءة التكوين المحدَّث، لتصبح تعريفات التخزين المعدَّلة نشطة بعد الإغلاق وإعادة الفتح التاليين ([SWS_PER_00577]).

لترحيل بيانات التطبيق الحالية، يتم عبر RegisterApplicationDataUpdateCallback تسجيل دالة استدعاء راجع يُطلقها ara::per عندما يكون ترحيل البيانات ضروريًا بالاستناد إلى إصدارات contract متباينة ([SWS_PER_00356]). ويمكن مراقبة التغييرات الموضعية لعناصر فردية عبر RegisterDataUpdateIndication ([SWS_PER_00578]). وتُستهل العملية الإجمالية لتحديث الثبات أثناء مرحلة التحقق بواسطة UpdatePersistency ([SWS_PER_00357]). وبعد التحديث الناجح، يزيل CleanUpPersistency بيانات النسخ الاحتياطي والترحيل القديمة ([SWS_PER_00567])، بينما يفرغ ResetPersistency مناطق التخزين بالكامل، بحيث يُعاد إنشاؤها مبدئيًا من البيان (manifest) عند الفتح التالي ([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)

مخطط تسلسلي: مسار تحديث الثبات مع فحص التكوين، والترحيل بالاستدعاء الراجع، والتنظيف. المصادر: [SWS_PER_00356]، [SWS_PER_00357]، [SWS_PER_00567]، [SWS_PER_00576]، [SWS_PER_00577]، EXP_SWArchitecture ص. 92.

مراقبة السلامة، ومعالجة التكرار، والاستعادة

لاعتراض مجموعات البيانات التالفة، تدعم مخازن المفتاح-القيمة والملفات نسخ تكرار قابلة للتكوين وآليات سلامة (CRC، وHash، ومصادقة MAC، والتشفير) (SWS_Persistency ص. 104، EXP_SWArchitecture ص. 230). وإذا فشلت فحوصات التكرار الداخلية، فيمكن إخطار التطبيقات ذات الصلة بالأمان عبر RegisterRecoveryReportCallback ([SWS_PER_00433]). وينقل الاستدعاء الراجع 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، وHash، و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

مخطط نشاط: مسار اتخاذ القرار عند تلف البيانات من فحص التكرار مرورًا بالاستدعاءات الراجعة وصولًا إلى الاستعادة أو إعادة التعيين. المصادر: [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)، يتم التمييز بين ما إذا كانت تتوفر دلالات التراجع (rollback semantics) (على سبيل المثال، في عمليات القراءة والموضع مثل [SWS_PER_00167] و[SWS_PER_00168]، حيث تظل المؤشرات دون تغيير) أو ما إذا كان يمكن حدوث تلف للبيانات دون ضمان التراجع (على سبيل المثال، مع [SWS_PER_00122] و[SWS_PER_00166] و[SWS_PER_00423]).

لتشخيص أخطاء المزامنة والوصول، تُنشئ الوحدة رسائل بروتوكول DLT قياسية (SWS_Persistency ص. 110). وهنا، تسجل رسائل مثل SyncToStorage (معرّف الرسالة 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 contains a common basis for ReadAccessor and WriteAccessor

أساس لـ ReadAccessor, WriteAccessor

FileInfo فئة

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

ReadAccessor is used to read file data

يرث من FileAccessor

أساس لـ ReadWriteAccessor

ReadWriteAccessor is used to read and write file data

يرث من ReadAccessor, WriteAccessor

Handle to a File Storage or Key-Value Storage

Handle to a ReadAccessor or ReadWriteAccessor

WriteAccessor is used to write file data

يرث من FileAccessor

أساس لـ 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 دالة

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;

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| دالة

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);

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 دالة

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 {...};
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 {...};

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