संसाधनों के संरक्षण के लिए चल रहे डायग्नोस्टिक रूटीन्स को किसी वार्तालाप के समयपूर्व निरस्तीकरण का संकेत देता है।
एआई-जनितअसत्यापितमॉडल: 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() के माध्यम से निरस्तीकरण स्थिति की जांच करने या सर्विस निष्पादन को तत्काल रोकने के लिए SetNotifier() के माध्यम से कॉलबैक द्वारा सूचित होने की अनुमति देता है [SWS_DM_00615]। एक बार सेट की गई निरस्तीकरण स्थिति अपरिवर्तनीय होती है, और इंस्टेंस तक पहुँच को एप्लिकेशन स्तर पर सुरक्षित किया जाना चाहिए, क्योंकि इंटरफ़ेस थ्रेड-सुरक्षित नहीं है।
संदर्भ
वर्ग 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])।
यदि कोई सक्रिय डायग्नोस्टिक वार्तालाप बाहरी घटनाओं या प्रोटोकॉल आवश्यकताओं द्वारा रद्द कर दिया जाता है, तो Diagnostic Server इंस्टेंस शुरू की गई गतिविधि को यथाशीघ्र रोकने के लिए बाध्य है [SWS_DM_00278]। CancellationHandler के माध्यम से यह निरस्तीकरण सर्विस प्रोसेसर को संकेतित किया जाता है, ताकि संसाधन-गहन गणनाओं को निरस्त किया जा सके और डायग्नोस्टिक प्रतिक्रियाओं को उनके ट्रांसमिशन शुरू होने से पहले अनुचित रूप से भेजे जाने से रोका जा सके [SWS_DM_00279]।
जीवनचक्र
ara::diag::CancellationHandler का इंस्टेंटिएशन डायग्नोस्टिक फ्रेमवर्क के अनन्य नियंत्रण में है: डिफ़ॉल्ट कंस्ट्रक्टर को अनुप्रयोगों के लिए स्पष्ट रूप से हटा दिया गया है (delete), ताकि इंस्टेंस विशेष रूप से DM-Core द्वारा ही बनाए जा सकें [SWS_DM_00609]। एक स्पष्ट स्थिति असाइनमेंट सुनिश्चित करने के लिए, वर्ग को गैर-कॉपी करने योग्य एकल इंस्टेंस के रूप में निर्दिष्ट किया गया है; कॉपी कंस्ट्रक्टर [SWS_DM_00611] और कॉपी असाइनमेंट ऑपरेटर [SWS_DM_00613] हटा दिए गए हैं।
इसके विपरीत, वर्ग मूव-सिमेंटिक्स का समर्थन करता है: मूव कंस्ट्रक्टर [SWS_DM_00610] और मूव असाइनमेंट ऑपरेटर [SWS_DM_00612] को डिफ़ॉल्ट कार्यान्वयन के रूप में noexcept घोषित किया गया है। यह संभवतः फ्रेमवर्क को इंस्टेंस के स्वामित्व को डाउनस्ट्रीम निष्पादन संदर्भों में कुशलतापूर्वक स्थानांतरित करने की अनुमति देता है। प्रश्न (खुला)
स्थिति के संदर्भ में, इंस्टेंस मोनोटोनिक व्यवहार प्रदर्शित करता है। इनिशियलाइज़ेशन के तुरंत बाद IsCanceled() मान false का संकेत देता है [SWS_DM_00984]। जैसे ही संबंधित डायग्नोस्टिक वार्तालाप रद्द होता है, स्थिति true में बदल जाती है। यह निरस्तीकरण स्थिति इंस्टेंस के नष्ट होने तक अपरिवर्तनीय रूप से बनी रहती है [SWS_DM_00984]।
पंजीकरण या पोलिंग: एप्लिकेशन 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]।
थ्रेड सुरक्षा पर विशेष ध्यान देने की आवश्यकता है: सभी सदस्य फ़ंक्शन्स (IsCanceled, SetNotifier) और कॉलबैक प्रकार को स्पष्ट रूप से गैर-थ्रेड-सुरक्षित घोषित किया गया है [SWS_DM_00614], [SWS_DM_00615], [SWS_DM_02075]। यदि स्थिति जांच या Notifier पंजीकरण थ्रेड सीमाओं के पार किए जाते हैं, तो एप्लिकेशन को बाहरी सुरक्षा तंत्रों का उपयोग करना चाहिए। इसके अतिरिक्त, कॉलबैक संभवतः DM के ट्रिगरिंग थ्रेड में समकालिक रूप से कॉल किया जाता है, इसलिए एप्लिकेशन-साइड Notifier फ़ंक्शन्स को नॉन-ब्लॉकिंग रहना चाहिए। प्रश्न Q-26c43c035d4f18a3 (खुला)
यह मार्गदर्शिका AUTOSAR Adaptive R25-11 विनिर्देश के आधार पर एक AI सिस्टम द्वारा तैयार की गई थी।
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/cancellation_handler.h से विधि ara::diag::CancellationHandler::SetNotifier ([SWS_DM_00615]) प्रकार 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 (खुला)
इंटरैक्शन
DM द्वारा सेवा और रूटीन हैंडलर को पैरामीटर के रूप में एक CancellationHandler इंस्टेंस पास किया जाता है, उदाहरण के लिए जेनेरिक सेवा प्रसंस्करण ([SWS_DM_00618]), डेटा एक्सेस ([SWS_DM_00636]) या रूटीन ([SWS_DM_00554]) में। यदि कोई डायग्नोस्टिक वार्तालाप निरस्त हो जाता है, तो DM यथासंभव चल रही आंतरिक गतिविधियों को निरस्त कर देता है ([SWS_DM_00278]) और प्रतिक्रिया के प्रसारण को त्याग देता है ([SWS_DM_00279])। SetNotifier के माध्यम से पंजीकरण IsCanceled ([SWS_DM_00984]) के माध्यम से निरस्तीकरण स्थिति की सिंक्रोनस पूछताछ के अलावा एक ईवेंट-संचालित प्रतिक्रिया पथ प्रदान करता है।
यह पाठ एक AI द्वारा तैयार किया गया था; सभी तकनीकी कथन पेलोड द्वारा समर्थित हैं।
gemini-3.8-flash-low· 2026-10-13 · जर्मन मूल