डायग्नोस्टिक रनटाइम एनवायरनमेंट को किसी ऐप्लिकेशन से फ़ाइल और डायरेक्टरी डेटा को चरणबद्ध तरीके से प्राप्त करने में सक्षम बनाता है।
एआई-जनितअसत्यापितमॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: a81aee002281उद्गमखुले प्रश्न (1)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल
डायग्नोस्टिक रनटाइम एनवायरनमेंट को किसी ऐप्लिकेशन से फ़ाइल और डायरेक्टरी डेटा को चरणबद्ध तरीके से प्राप्त करने में सक्षम बनाता है।
क्लास ara::diag::DataTransferReadByPullHandler फ़ाइल या डायरेक्टरी डेटा उपलब्ध कराने का काम करती है, जिसे UDS रीड ऑपरेशन के संदर्भ में डायग्नोस्टिक लेयर AraDiag द्वारा ऐप्लिकेशन से सक्रिय रूप से प्राप्त ([SWS_DM_01506]) किया जाता है। इस प्रक्रिया में Read() के माध्यम से चरणबद्ध डेटा पुनर्प्राप्ति से लेकर ExitRead() के माध्यम से अंतिम सत्र समाप्ति तक शामिल है। एक सख्त लाइफ़साइकिल शर्त के रूप में, ठीक एक सिंगल ट्रांसफ़र सत्र से संबद्ध किसी हैंडलर इंस्टेंस को किसी भी स्थिति में ExitRead() के कॉल से पहले नष्ट नहीं किया जाना चाहिए ([SWS_DM_01510])।
संदर्भ
क्लास ara::diag::DataTransferReadByPullHandler ([SWS_DM_01506], AUTOSAR_AP_SWS_Diagnostics §8.10.2 “Class: DataTransferReadByPullHandler”) फ़ाइलों या डायरेक्टरीज़ को पढ़ने के लिए डायग्नोस्टिक अनुरोधों (जैसे RequestReadFile या RequestReadDirectory) द्वारा शुरू किए गए डेटा ट्रांसफ़र को संभालती है। यह आर्किटेक्चर एक पुल-प्रक्रिया पर आधारित है, जिसमें डायग्नोस्टिक लेयर AraDiag ट्रांसफ़र किए जाने वाले डेटा को कार्यान्वयन से सक्रिय रूप से पुनर्प्राप्त (“pulled”) करती है।
इस इंटरैक्शन में तीन घटक शामिल होते हैं: बाहरी UDS क्लाइंट (डायग्नोस्टिक टेस्टर), डायग्नोस्टिक सबसिस्टम AraDiag और ऐप्लिकेशन-विशिष्ट हैंडलर कार्यान्वयन। बाहरी क्लाइंट रीड अनुरोध भेजता है, जिसके बाद AraDiag चरणबद्ध तरीके से डेटा चंक्स उपलब्ध कराने और उन्हें UDS क्लाइंट को प्रेषित करने के लिए हैंडलर के मेथड्स को कॉल करता है ([SWS_DM_01513])।
जीवनचक्र
किसी हैंडलर इंस्टेंस का लाइफ़साइकिल विशेष रूप से किसी एकल फ़ाइल ट्रांसफ़र सत्र से बंधा होता है। डिफ़ॉल्ट कंस्ट्रक्टर protected घोषित किया गया है ([SWS_DM_01507])। व्याख्या: इसलिए, ठोस ऐप्लिकेशन संभवतः एक व्युत्पन्न सबक्लास को कार्यान्वित और इंस्टैंसिएट करेगा। प्रश्न Q-cb78bc4a1d40968b (खुला)
कॉपी ऑपरेशन पूरी तरह से अक्षम हैं: कॉपी कंस्ट्रक्टर ([SWS_DM_01509]) और कॉपी असाइनमेंट ऑपरेटर ([SWS_DM_01512]) हटाए गए (=delete) के रूप में निर्दिष्ट हैं, क्योंकि हैंडलर किसी सत्र के भीतर वन-वे उपयोग के लिए निर्धारित हैं (“only one way usage i.e. per single file transfer session”)। इसके विपरीत, मूव ऑपरेशन्स (Move Constructor और Move Assignment) डिफ़ॉल्ट कार्यान्वयन के रूप में परिभाषित हैं और noexcept के रूप में घोषित हैं ([SWS_DM_01508], [SWS_DM_01511], AUTOSAR_AP_SWS_Diagnostics §8.10.2.1.1.1 “Move Constructor”)।
रिलीज़ के लिए एक सख्त पूर्व-शर्त लागू होती है: मेथड ExitRead() को कॉल किए जाने से पहले क्लास के किसी भी इंस्टेंस को नष्ट नहीं किया जाना चाहिए ([SWS_DM_01510], AUTOSAR_AP_SWS_Diagnostics §8.10.2.1.1.2 “Destructor”)। कॉनकरेंसी के संबंध में, इंटरफ़ेस मेथड्स Read() और ExitRead() को नॉन-थ्रेड-सेफ़ (“not thread-safe”), लेकिन अपवाद-सुरक्षित (noexcept) परिभाषित किया गया है ([SWS_DM_01513], [SWS_DM_01514])।
उपयोग पथ
डेटा पुनर्प्राप्ति का नियमित प्रवाह निम्नलिखित चरणों में विभाजित है:
आरंभीकरण: ऐप्लिकेशन आगामी ट्रांसफ़र सत्र के लिए व्युत्पन्न हैंडलर क्लास को इंस्टैंसिएट करता है।
डेटा पुनर्प्राप्ति: डेटा ब्लॉक्स उपलब्ध कराने के लिए AraDiag मेथड Read() को कॉल करता है ([SWS_DM_01513], AUTOSAR_AP_SWS_Diagnostics §8.10.2.1.3.2 “Read”)। ऐप्लिकेशन AraDiag द्वारा पूर्व-आवंटित बफ़र पर एक मेमोरी व्यू response_data (प्रकार ara::core::Span<const ara::core::Byte> का) प्राप्त करता है, इसे अगली फ़ाइल सामग्री से भरता है और लिखे गए बाइट्स की संख्या के साथ ara::core::Future<std::uint32_t> को पूरा करता है। AraDiag ब्लॉक अनुक्रम काउंटर (blockSequenceCounter) के बाद इस डेटा को transferResponseParameterRecord के रूप में सकारात्मक UDS प्रतिक्रिया में सम्मिलित करता है ([SWS_DM_01513])। यह चरण बाद के चंक्स के लिए दोहराया जाता है।
सत्र समाप्ति: ट्रांसफ़र को नियमित रूप से समाप्त करने के लिए AraDiag, ExitRead() को कॉल करता है ([SWS_DM_01514], AUTOSAR_AP_SWS_Diagnostics §8.10.2.1.3.1 “ExitRead”)। समाप्ति का कारण exit_type, निर्माता-विशिष्ट पैरामीटर्स (transfer_request_parameter_record), meta_info और एक cancellation_handler पास किए जाते हैं। कार्यान्वयन इसे एक ara::core::Future<ara::core::Vector<ara::core::Byte>> के माध्यम से स्वीकार करता है, जिसके रिटर्न मान सकारात्मक प्रतिक्रिया में SID के बाद प्रेषित किए जाते हैं ([SWS_DM_01514])।
रिलीज़: हैंडलर ऑब्जेक्ट को केवल ExitRead() के सफल कॉल के बाद ही नष्ट किया जा सकता है ([SWS_DM_01510])।
अनुक्रम आरेख: AraDiag के माध्यम से पुल-प्रक्रिया द्वारा डेटा पुनर्प्राप्ति का विशिष्ट प्रवाह। स्रोत: [SWS_DM_01513], [SWS_DM_01514]
त्रुटि परिदृश्य
यदि डेटा तैयार करने या समाप्ति के दौरान त्रुटियां होती हैं, तो ऐप्लिकेशन इसे लौटाए गए Future के माध्यम से रिपोर्ट करता है, इसे ISO 14229-1 के अनुसार UDS त्रुटि कोड (DiagUdsNrcErrc) के साथ प्रदान करके ([SWS_DM_01513], [SWS_DM_01514])। AraDiag इसके बाद टेस्टर को संबंधित नकारात्मक UDS प्रतिक्रिया (NRC) उत्पन्न करता है।
समयपूर्व निरस्तीकरण के लिए, दोनों मेथड्स को एक CancellationHandler पास किया जाता है ([SWS_DM_01513], [SWS_DM_01514])। ऐप्लिकेशन cancellation_handler.IsCanceled() के माध्यम से जांच सकता है कि क्या वार्तालाप रद्द कर दिया गया था, या cancellation_handler.SetNotifier() के माध्यम से एक कॉलबैक फ़ंक्शन पंजीकृत कर सकता है। प्रदान किए गए बफ़र्स (response_data और transfer_request_parameter_record) प्रॉमिस की पूर्ति तक या हैंडलर के माध्यम से निरस्तीकरण तक मान्य रहते हैं।
यदि इंस्टेंस को ExitRead() के कॉल से पहले नष्ट कर दिया जाता है, तो यह विनिर्देश आवश्यकता का उल्लंघन है ([SWS_DM_01510]), जिससे अपूर्ण ट्रांसफ़र सत्र और अनिर्धारित सिस्टम स्थितियां हो सकती हैं।
यह क्लास गाइड AUTOSAR Adaptive R25-11 विनिर्देश पर आधारित है और इंटरफ़ेस ara::diag::DataTransferReadByPullHandler की आवश्यकताओं को सारांशित करता है।
Reads data chunk from the application. The first or subsequent file/directory info content chunk to be sent back to the UDS client will be composed by the application and copied into the provided by ara::diag Span with up to the requested Span size.
एआई-जनितअसत्यापितमॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 7a822a7b2a3dउद्गम
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल
प्योर वर्चुअल मेथड ExitRead, ara::diag::DataTransferReadByPullHandler[SWS_DM_01514] (AUTOSAR_AP_SWS_Diagnostics §8.10.2.1.3.1 “ExitRead”) के ढांचे में चल रहे डेटा ट्रांसफर सत्र को समाप्त करती है। यह पैरामीटर के रूप में समाप्ति कारण exit_type (प्रकार DataTransferExitType), transfer_request_parameter_record में वाहन निर्माता-विशिष्ट पैरामीटर (ara::core::Span<const ara::core::Byte> के रूप में), अनुरोध संदर्भ meta_info तथा एक cancellation_handler स्वीकार करती है। पैरामीटर transfer_request_parameter_record तब तक मान्य रहता है जब तक कि संबंधित Promise पूरा नहीं हो जाता या Cancellation-Handler के माध्यम से निष्पादन रद्द नहीं कर दिया जाता [SWS_DM_01514]।
कॉल एसिंक्रोनस रूप से होता है और एक ara::core::Future<ara::core::Vector<ara::core::Byte>> लौटाता है [SWS_DM_01514]:
सफलता के मामले में, सकारात्मक रिस्पॉन्स संदेश के लिए Future प्रदान किया जाता है; इस दौरान OperationOutput.response_data का डेटा सर्विस ID के बाद transferResponseParameterRecord के रूप में रखा जाता है।
त्रुटि के मामले में, नकारात्मक रिस्पॉन्स संदेश के लिए Future को ISO 14229-1 के अनुसार DiagUdsNrcErrc से एक UDS त्रुटि कोड (NRC) के साथ पूरा किया जाता है।
फ़ंक्शन को noexcept घोषित किया गया है और यह अपवाद-सुरक्षित (exception safe) है, लेकिन थ्रेड-सुरक्षित नहीं (not thread-safe) है [SWS_DM_01514]। cancellation_handler के माध्यम से, cancellation_handler.IsCanceled() का उपयोग करके रद्दीकरण स्थिति की क्वेरी की जा सकती है या वार्तालाप के रद्दीकरण के लिए cancellation_handler.SetNotifier() के माध्यम से एक अधिसूचना फ़ंक्शन पंजीकृत किया जा सकता है [SWS_DM_01514]।
क्रम के संबंध में, DataTransferReadByPullHandler के किसी इंस्टेंस को ExitRead() के कॉल होने से पहले किसी भी स्थिति में नष्ट नहीं किया जाना चाहिए [SWS_DM_01510]। इसी प्रकार के टर्मिनेशन फ़ंक्शन्स और डिस्ट्रक्टर स्थितियाँ समानांतर में ara::diag::DataTransferReadSharedDataHandler::ExitRead[SWS_DM_01505] ([SWS_DM_01499]) और ara::diag::DataTransferReadByPushHandler::ExitRead[SWS_DM_01523] ([SWS_DM_01519]) के लिए मौजूद हैं।
यह पाठ एक AI द्वारा तैयार किया गया था; केवल विनिर्देश ही बाध्यकारी है।
This parameter record contains parameter(s), which are required
parameter_record
by the server to support the transfer of data. Format and length of this parameter(s) are vehicle manufacturer specific. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
meta_info
MetaInfo of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to OperationOutput (transfer ResponseParameterRecord for a positive response message) or readied with UDS ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in OperationOutput.response_data will be placed after SID as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
Reads data chunk from the application. The first or subsequent file/directory info content chunk to be sent back to the UDS client will be composed by the application and copied into the provided by ara::diag Span with up to the requested Span size.
एआई-जनितअसत्यापितमॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 104f857aa59eउद्गम
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल
उपयोग और कॉल सिमेंटिक्स
क्लास ara::diag::DataTransferReadByPullHandler का मेथड Read UDS डेटा स्थानांतरण के संदर्भ में एप्लिकेशन द्वारा डेटा ब्लॉक्स को पढ़ने के लिए उपयोग किया जाता है [SWS_DM_01513]। एप्लिकेशन पहले या बाद के फ़ाइल अथवा निर्देशिका सामग्री ब्लॉक्स को संकलित करता है और इन्हें ara::diag द्वारा पास किए गए बफ़र response_data (प्रकार ara::core::Span<const ara::core::Byte>) में अधिकतम स्पैन के आकार तक कॉपी करता है।
कॉल एसिंक्रोनस रूप से होती है और एक ara::core::Future<std::uint32_t> लौटाती है [SWS_DM_01513]। सफलता के मामले में Future वास्तव में प्रदान की गई बाइट संख्या के साथ पूर्ण होता है; यह डेटा सकारात्मक UDS प्रतिक्रिया में blockSequenceCounter के बाद transferResponseParameterRecord के रूप में रखा जाता है। पैरामीटर cancellation_handler के माध्यम से एप्लिकेशन IsCanceled() का उपयोग करके रद्दीकरण स्थिति की क्वेरी कर सकता है या SetNotifier() के माध्यम से रद्दीकरण के लिए एक अधिसूचना फ़ंक्शन पंजीकृत कर सकता है।
त्रुटि प्रबंधन और सीमा शर्तें
त्रुटि की स्थिति में Future को ISO 14229-1 के अनुसार DiagUdsNrcErrc से एक लागू UDS NRC के साथ पूरा किया जाता है [SWS_DM_01513]। यदि कोई इंटरफ़ेस offer() के माध्यम से प्रदान नहीं किया गया है या अब प्रदान नहीं किया गया है, तो DM NRC 0x94 (ResourceTemporarilyNotAvailable) के साथ उत्तर देता है [SWS_DM_01257]।
समवर्तीता और परस्पर क्रिया
इंटरफ़ेस को गैर-थ्रेड-सुरक्षित (not thread-safe), लेकिन अपवाद-सुरक्षित (exception safe) के रूप में निर्दिष्ट किया गया है [SWS_DM_01513]। response_data का मेमोरी क्षेत्र केवल तब तक मान्य रहता है जब तक कि संबंधित Promise पूरा न हो जाए या प्रक्रिया रद्द न हो जाए। पुल पैटर्न के विकल्प के रूप में, डेटा स्थानांतरण के लिए DataTransferReadByPushHandler::Read[SWS_DM_01522] के माध्यम से पुश विधि और साथ ही DataTransferReadSharedOwnershipHandler::Read[SWS_DM_01504] के माध्यम से साझा स्वामित्व वाला स्थानांतरण मौजूद है।
यह उपयोग संबंधी निर्देश AUTOSAR Adaptive के विनिर्देश दस्तावेज़ों के आधार पर स्वचालित रूप से तैयार किया गया था।
The view over a pre-allocated by AraDiag memory to write in this data chunk. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
meta_info
MetaInfo of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to actual amount of data provided in the Span (for a positive response message) or readied with UDS ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in response_data will be placed after blockSequenceCounter as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · जर्मन मूल