يشير لروتينات التشخيص قيد التشغيل بالإلغاء المبكر للمحادثة لتوفير الموارد.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 654e2e9e4acaالمصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يشير لروتينات التشخيص قيد التشغيل بالإلغاء المبكر للمحادثة لتوفير الموارد.
تُخطر الفئة ara::diag::CancellationHandler تطبيقات التشخيص بالإلغاء المبكر لعملية معالجة جارية في Diagnostic Management [SWS_DM_00608]. يتيح الكائن الذي ينشئه DM-Core لمعالج الخدمة الاستعلام عن حالة الإلغاء عبر IsCanceled() أو تلقي إشعار عبر رد نداء (Callback) من خلال SetNotifier() لإيقاف معالجة الخدمة فورًا [SWS_DM_00615]. وبمجرد تعيين حالة الإلغاء، تصبح غير قابلة للإلغاء، ويجب تأمين عمليات الوصول إلى النسخة من جانب التطبيق، نظرًا لأن الواجهة ليست آمنة مؤشريًا (Thread-safe).
السياق
تعمل الفئة ara::diag::CancellationHandler داخل الوحدة diag كمؤشر حالة مشترك يوضح ما إذا كان ينبغي إلغاء معالجة تشخيصية جارية قبل أوانها [SWS_DM_00608]. وفي AUTOSAR Adaptive Platform، تتوسط الفئة بين نسخة خادم Diagnostic Management (DM) ومنطق التطبيق المنفِّذ، كما هو الحال على سبيل المثال عند معالجة خدمات UDS الخاصة بالشركة المصنعة (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.24 «Custom Diagnostic Services»، [SWS_DM_00502]).
إذا أُلغيت محادثة تشخيصية نشطة بسبب أحداث خارجية أو متطلبات البروتوكول، تلتزم نسخة خادم التشخيص بإيقاف النشاط الذي بدأ في أسرع وقت ممكن [SWS_DM_00278]. ويُشار بهذا الإلغاء إلى معالج الخدمة عبر CancellationHandler، بحيث يتم إيقاف الحسابات المستهلكة للموارد ومنع الإرسال غير المسموح به لاستجابات التشخيص قبل بدء نقلها [SWS_DM_00279].
دورة الحياة
تخضع عملية إنشاء نسخ ara::diag::CancellationHandler للتحكم الحصري لإطار عمل التشخيص: تم حذف المُنشئ الافتراضي صراحةً للتطبيقات (delete)، بحيث لا يمكن إنشاء النسخ إلا من خلال DM-Core حصريًا [SWS_DM_00609]. ولضمان تعيين فريد للحالة، حُددت الفئة كنسخة مفردة غير قابلة للنسخ؛ ومُنشئ النسخ [SWS_DM_00611] وعامل إسناد النسخ [SWS_DM_00613] محذوفان.
في المقابل، تدعم الفئة دلالات النقل (Move semantics): أُعلن عن مُنشئ النقل [SWS_DM_00610] وعامل إسناد النقل [SWS_DM_00612] كتنفيذات قياسية بأنها noexcept. ويفترض أن هذا يتيح لإطار العمل نقل ملكية النسخة بكفاءة إلى سياقات تنفيذ تالية. سؤال (مفتوح)
من ناحية الحالة، تظهر النسخة سلوكًا رتيبًا. فمباشرة بعد التهيئة، يشير IsCanceled() إلى القيمة false[SWS_DM_00984]. وبمجرد إلغاء محادثة التشخيص المرتبطة بها، تنتقل الحالة إلى true. وتظل حالة الإلغاء هذه قائمة بصورة لا رجعة فيها حتى تدمير النسخة [SWS_DM_00984].
التسجيل أو الاستقصاء الدوري (Polling): يسجل التطبيق باستخدام SetNotifier() دالة إشعار من النوع ara::diag::CancellationHandler::CancellationHandlerSetNotifier ([SWS_DM_02075])، والتي تُستدعى عند حدوث الإلغاء [SWS_DM_00615]. كبديل أو بشكل موازٍ، يستعلم دوريًا عن IsCanceled()[SWS_DM_00614].
الإشارة: إذا ألغى DM المحادثة، تنتقل الحالة في المعالج إلى true[SWS_DM_00984] ويتم إطلاق المُنبه (Notifier) المسجل [SWS_DM_00615].
الإلغاء: يوقف التطبيق العمل الذي بدأ فيه على الفور [SWS_DM_00278]. وإذا لم تكن الاستجابة قد نُقلت بعد، يمنع DM إرسالها [SWS_DM_00279].
الإنهاء: بعد اكتمال المعالجة، يُدمَّر كائن المعالج جنبًا إلى جنب مع سياق الخدمة.
تتميز واجهة ara::diag::CancellationHandler بتصميم خالٍ من الأخطاء. فجميع الطرق مثل IsCanceled()[SWS_DM_00614] وSetNotifier()[SWS_DM_00615] بالإضافة إلى عمليات النقل [SWS_DM_00610][SWS_DM_00612] آمنة من الاستثناءات (noexcept) ولا ترجع رموز أخطاء.
إذا حدث استدعاء متعدد لـ SetNotifier()، فلا يؤدي ذلك إلى خطأ: عمليات التسجيل اللاحقة تستبدل تمامًا رد النداء المعين مسبقًا [SWS_DM_00615]، [SWS_DM_01348].
يتطلب الأمان المؤشري (Thread safety) عناية خاصة: أُعلن صراحة عن جميع الدوال الأعضاء (IsCanceled، SetNotifier) ونوع رد النداء بأنها غير آمنة مؤشريًا [SWS_DM_00614]، [SWS_DM_00615]، [SWS_DM_02075]. وإذا أُجريت استعلامات الحالة أو تسجيلات المُنبه عبر حدود المسارات (Threads)، فيجب على التطبيق استخدام آليات حماية خارجية. بالإضافة إلى ذلك، يُرجح أن يُستدعى رد النداء بشكل متزامن في المسار المُطلق التابع لـ DM، ولهذا السبب ينبغي أن تظل دوال المُنبه من جانب التطبيق غير حاجزة (non-blocking). سؤال Q-26c43c035d4f18a3 (مفتوح)
تم إنشاء هذا الدليل بواسطة نظام ذكاء اصطناعي بناءً على مواصفات AUTOSAR Adaptive R25-11.
Registering a notifier function which is called if the diagnostic service execution is cancelled in DM. A consecutive call of this method will overwrite the previous registered notifier.
Registering a notifier function which is called if the diagnostic service execution is cancelled in DM. A consecutive call of this method will overwrite the previous registered notifier.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: d99693aaeb20المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تُسجل الدالة ara::diag::CancellationHandler::SetNotifier ([SWS_DM_00615]) من ملف الترويسة ara/diag/cancellation_handler.h دالة استدعاء رجعي من النوع CancellationHandlerSetNotifier. ويتم استدعاء هذه الدالة بواسطة Diagnostic Management (DM) بمجرد إلغاء تنفيذ إحدى خدمات التشخيص. ويتم التسجيل نفسه بشكل متزامن وبدون قيمة مرجعة (void).
معالجة الأخطاء ودلالات التنفيذ
تم تحديد الاستدعاء على أنه noexcept ويُعتبر آمنًا من الاستثناءات (exception safe) ([SWS_DM_00615]). ولم يتم تحديد أكواد أخطاء معينة، أو قيم إرجاع أخطاء، أو إخطارات DET/DEM لهذه الواجهة.
التزامن والقيود
فيما يتعلق بأمان مؤشرات الترابط، تم تصنيف الطريقة على أنها not thread-safe ([SWS_DM_00615]). لذلك، لا يجوز تعديل مثيل من CancellationHandler بشكل متزامن دون حماية. عند استدعاء SetNotifier عدة مرات متتالية على نفس المثيل، يقوم DM بالكتابة فوق المنبّه المسجل سابقاً ([SWS_DM_01348]، SWS Diagnostics ص. 193). بالإضافة إلى ذلك، لا ينبغي لدالة معاودة الاتصال، لأسباب عملية، تنفيذ أي عمليات حجب حتى لا تؤخر معالجة الإلغاء الداخلية الخاصة بـ DM. سؤال Q-94d2cb76c17c4fa4 (مفتوح)
تفاعل
يتم تمرير مثيل CancellationHandler إلى معالجات الخدمات والروتينات من قِبل DM كمعامل، على سبيل المثال أثناء المعالجة العامة للخدمة ([SWS_DM_00618])، أو الوصول إلى البيانات ([SWS_DM_00636]) أو الروتينات ([SWS_DM_00554]). إذا تم إلغاء محادثة تشخيصية، يقوم DM بإلغاء الأنشطة الداخلية الجارية قدر الإمكان ([SWS_DM_00278]) ويتجاهل إرسال الاستجابة ([SWS_DM_00279]). يوفر التسجيل عبر SetNotifier مسار استجابة موجهاً بالأحداث، بالإضافة إلى الاستعلام المتزامن عن حالة الإلغاء عبر IsCanceled ([SWS_DM_00984]).
تم إنشاء هذا النص بواسطة ذكاء اصطناعي؛ وجميع البيانات التقنية مدعومة بحمولة البيانات (Payload).
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني