template <typename T> class UniqueHandle final {...};
Handle to a ReadAccessor or ReadWriteAccessor. A UniqueHandle is returned by the functions OpenFileReadOnly(), OpenFileWriteOnly(), and OpenFileReadWrite().
RAII-सिमेंटिक्स के साथ फ़ाइल एक्सेसर ऑब्जेक्ट्स तक अनन्य, स्थानांतरित करने योग्य पहुंच का प्रबंधन करता है।
एआई-जनितअसत्यापितमॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 7be811cdf7d8उद्गमखुले प्रश्न (1)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल
RAII-सिमेंटिक्स के साथ फ़ाइल एक्सेसर ऑब्जेक्ट्स तक अनन्य, स्थानांतरित करने योग्य पहुंच का प्रबंधन करता है।
क्लास टेम्पलेट ara::per::UniqueHandle सख्त मूव-ओनली सिमेंटिक्स के ढांचे के भीतर AUTOSAR Persistency के फ़ाइल एक्सेसर ऑब्जेक्ट्स के अनन्य स्वामित्व का प्रबंधन करता है। फ़ाइल एक्सेस फ़ंक्शनों के माध्यम से प्राप्त करने के बाद, किसी भी उपयोग से पहले operator bool() के माध्यम से इंस्टेंस की वैधता की अनिवार्य रूप से जांच की जानी चाहिए [SWS_PER_00371]। किसी खाली या स्थानांतरित हैंडल पर अन्य ऑपरेटरों को कॉल करने से अनिर्धारित व्यवहार होता है [SWS_PER_00399]। सभी ऑपरेशनों को noexcept के रूप में घोषित किया गया है, जहाँ रीड एक्सेस थ्रेड-सुरक्षित हैं, जबकि संशोधन करने वाले ऑपरेशन नहीं हैं।
संदर्भ
क्लास टेम्पलेट ara::per::UniqueHandle AUTOSAR Adaptive Persistency के संसाधन ऑब्जेक्ट्स, विशेष रूप से ReadAccessor या ReadWriteAccessor के लिए एक टाइप-सुरक्षित एक्सेस हैंडल के रूप में कार्य करता है। यह फ़ंक्शनों OpenFileReadOnly(), OpenFileWriteOnly() तथा OpenFileReadWrite() के रिटर्न मान के रूप में प्रदान किया जाता है और खोले गए फ़ाइल एक्सेस इंटरफ़ेस के अनन्य स्वामित्व को इनकैप्सुलेट करता है।
जीवनचक्र
यह क्लास सख्त मूव-ओनली सिमेंटिक्स (Unique Ownership) को कार्यान्वित करती है। एक्सेस के अनजाने दोहराव या साझा स्वामित्व को रोकने के लिए, कॉपी कंस्ट्रक्टर [SWS_PER_00373] और कॉपी असाइनमेंट ऑपरेटर [SWS_PER_00374] दोनों को हटाए गए (delete) के रूप में परिभाषित किया गया है। स्वामित्व अधिकारों को केवल मूव करके ही स्थानांतरित किया जा सकता है: मूव कंस्ट्रक्टर [SWS_PER_00371] या मूव असाइनमेंट [SWS_PER_00372] को कॉल करने पर, पास किया गया स्रोत ऑब्जेक्ट अमान्य हो जाता है और उसके बाद इसका उपयोग नहीं किया जा सकता है।
एक UniqueHandle किसी भी समय या तो एक मान्य स्थिति में होता है (यह पैरामीटरयुक्त क्लास के एक मान्य ऑब्जेक्ट का प्रतिनिधित्व करता है) या फिर एक खाली अथवा अमान्य स्थिति में, जैसा कि मूव ट्रांसफर के बाद होता है [SWS_PER_00399]। स्कोप समाप्त होने पर डिस्ट्रक्टर [SWS_PER_00569] निष्पादित होता है। संभवतः किसी मान्य हैंडल का विनाश इनकैप्सुलेटेड एक्सेस संसाधन को स्वचालित रूप से बंद अथवा साफ़ कर देता है। प्रश्न Q-e7f12aa0d7c5548d (खुला)
UniqueHandle का विशिष्ट उपयोग चरणों के एक निर्धारित अनुक्रम का अनुसरण करता है:
हैंडल अधिग्रहण: एप्लिकेशन फ़ाइल एक्सेस कॉल जैसे OpenFileReadOnly(), OpenFileWriteOnly() या OpenFileReadWrite() के परिणाम के रूप में हैंडल प्राप्त करता है।
स्थिति जांच: किसी भी अन्य ऑपरेशन से पहले, operator bool() का उपयोग करके इंस्टेंस की स्थिति को अनिवार्य रूप से सत्यापित किया जाना चाहिए [SWS_PER_00371], [SWS_PER_00372]। यदि कोई मान्य ऑब्जेक्ट मौजूद है तो ऑपरेटर true लौटाता है, और यदि हैंडल खाली है तो false लौटाता है [SWS_PER_00399]।
इनकैप्सुलेटेड ऑब्जेक्ट तक पहुंच: मान्य स्थिति होने पर, तीर ऑपरेटरों operator-> (गैर-स्थिर [SWS_PER_00360] या स्थिर [SWS_PER_00361]) के माध्यम से या operator* (गैर-स्थिर [SWS_PER_00400] या स्थिर [SWS_PER_00401]) का उपयोग करके डीरेफ़रेंसिंग के ज़रिए लक्ष्य के मेथडों और डेटा तक पहुँचा जाता है।
स्वामित्व स्थानांतरण या विनाश: आवश्यकता पड़ने पर हैंडल को std::move के ज़रिए किसी अन्य घटक में स्थानांतरित किया जा सकता है [SWS_PER_00371] या जीवनकाल के अंत में स्वचालित रूप से नष्ट कर दिया जाता है [SWS_PER_00569]।
त्रुटि परिदृश्य
एक खाली या स्थानांतरित हैंडल तक पहुंच एक केंद्रीय त्रुटि परिदृश्य प्रस्तुत करती है: विनिर्देश के अनुसार, किसी खाली हैंडल पर operator bool() के अलावा अन्य ऑपरेटरों का उपयोग अनिर्धारित व्यवहार (Undefined Behavior) की ओर ले जाता है [SWS_PER_00399]। इसलिए किसी भी डीरेफ़रेंसिंग से पहले जाँच अनिवार्य रूप से निर्धारित की गई है [SWS_PER_00371], [SWS_PER_00372]।
अपवाद सुरक्षा और समवर्तीता के संबंध में निम्नलिखित विनिर्देश विवरण लागू होते हैं:
Move constructor for UniqueHandle. The source handle object is invalidated and cannot be used anymore. The operator bool() shall be used to check the state of a handle object before using any other operators of the handle object.
Move assignment operator for UniqueHandle. The source handle object is invalidated and cannot be used anymore. The operator bool() shall be used to check the state of a handle object before using any other operators of the handle object.
Handle state. True if the handle represents a valid object of the templated class, False if the handle is empty (e.g. after a move operation). Using other operators than bool() of an empty handle will result in undefined behavior.
Move constructor for UniqueHandle. The source handle object is invalidated and cannot be used anymore. The operator bool() shall be used to check the state of a handle object before using any other operators of the handle object.
Move assignment operator for UniqueHandle. The source handle object is invalidated and cannot be used anymore. The operator bool() shall be used to check the state of a handle object before using any other operators of the handle object.
Handle state. True if the handle represents a valid object of the templated class, False if the handle is empty (e.g. after a move operation). Using other operators than bool() of an empty handle will result in undefined behavior.
gemini-3.8-flash-low· 2026-10-13 · जर्मन मूल