Erlang 21

supervisor_bridge




erlang

supervisor_bridge

मॉड्यूल

supervisor_bridge

मॉड्यूल सारांश

सामान्य पर्यवेक्षक पुल व्यवहार।

विवरण

यह व्यवहार मॉड्यूल एक पर्यवेक्षक पुल प्रदान करता है, एक प्रक्रिया जो एक सबसिस्टम को जोड़ता है जिसे ओटीपी डिजाइन सिद्धांतों के अनुसार एक पर्यवेक्षण वृक्ष के अनुसार डिज़ाइन नहीं किया गया है। सुपरवाइजर ब्रिज एक सुपरवाइजर और सबसिस्टम के बीच बैठता है। यह अपने स्वयं के पर्यवेक्षक के लिए एक वास्तविक पर्यवेक्षक की तरह व्यवहार करता है, लेकिन उप पर्यवेक्षक के लिए एक वास्तविक पर्यवेक्षक की तुलना में एक अलग इंटरफ़ेस है। अधिक जानकारी के लिए, ओटीपी डिज़ाइन सिद्धांतों में Supervisor Behaviour देखें।

एक पर्यवेक्षक पुल उप-प्रणाली को शुरू करने और रोकने के लिए कार्यों को मानता है और कॉलबैक मॉड्यूल में स्थित होना चाहिए जो कार्यों के पूर्वनिर्धारित सेट का निर्यात करता है।

पर्यवेक्षक पुल डिबगिंग के लिए sys(3) मॉड्यूल का उपयोग किया जा सकता है।

जब तक अन्यथा न कहा गया हो, इस मॉड्यूल में सभी कार्य विफल हो जाते हैं यदि निर्दिष्ट पर्यवेक्षक पुल मौजूद नहीं है या यदि खराब तर्क निर्दिष्ट हैं।

निर्यात

start_link (मॉड्यूल, आर्ग) -> परिणाम

प्रकार

एक पर्यवेक्षक पुल प्रक्रिया बनाता है, जो कॉलिंग प्रक्रिया से जुड़ा होता है, जो सबसिस्टम शुरू करने के लिए Module:init/1 कहता है। एक सिंक्रनाइज़ स्टार्टअप प्रक्रिया सुनिश्चित करने के लिए, यह फ़ंक्शन Module:init/1 तक वापस नहीं आता है Module:init/1 वापस आ गया है।

  • यदि SupBridgeName={local,Name} , पर्यवेक्षक पुल स्थानीय रूप से register/2 का उपयोग करके Name रूप में register/2

  • यदि SupBridgeName={global,Name} , पर्यवेक्षक ब्रिज वैश्विक रूप से Name रूप में global:register_name/2 का उपयोग करके global:register_name/2

  • यदि SupBridgeName={via,Module,Name} , पर्यवेक्षक पुल को पंजीकृत किया जाता है, तो Name मॉड्यूल द्वारा प्रस्तुत रजिस्ट्री का उपयोग करके Name रूप में पंजीकृत किया जाता है। Module कॉलबैक फ़ंक्शन register_name/2 , unregister_name/1 को निर्यात करने और send/2 , जो कि global में संबंधित कार्यों की तरह व्यवहार करना है। इस प्रकार, {via,global,GlobalName} एक वैध संदर्भ है।

यदि कोई नाम नहीं दिया गया है, तो पर्यवेक्षक पुल पंजीकृत नहीं है।

Module कॉलबैक मॉड्यूल का नाम है।

Args एक मनमाना शब्द है जिसे Module:init/1 के तर्क के रूप में पारित किया जाता है।

  • यदि सुपरवाइज़र ब्रिज और सबसिस्टम सफलतापूर्वक शुरू हो गए हैं, तो फ़ंक्शन {ok,Pid} लौटाता है, जहां Pid सुपरवाइज़र ब्रिज का pid है।

  • यदि पहले से ही निर्दिष्ट SupBridgeName साथ एक प्रक्रिया मौजूद है, तो फ़ंक्शन {error,{already_started,Pid}} , जहां Pid उस प्रक्रिया का पिड है।

  • यदि Module:init/1 रिटर्न ignore , तो यह फंक्शन रिटर्न ignore करता है और सुपरवाइजर ब्रिज normal होने के कारण समाप्त हो जाता normal

  • यदि Module:init/1 विफल हो जाता है या एक त्रुटि ट्यूपल या एक गलत मान देता है, तो यह फ़ंक्शन {error,Errorr} , जहां Error बारे में जानकारी के साथ एक टर्म है, और सुपरवाइजर ब्रिज कारण Error साथ देता है।

कॉलबैक कार्य

निम्नलिखित कार्यों को supervisor_bridge कॉलबैक मॉड्यूल से निर्यात किया जाना चाहिए।

निर्यात

मॉड्यूल: init (आर्ग्स) -> परिणाम

प्रकार

जब भी सुपरवाइज़र ब्रिज को start_link/2,3 का उपयोग करना शुरू किया जाता है, तो इस फ़ंक्शन को सबसिस्टम शुरू करने और आरंभ करने के लिए नई प्रक्रिया द्वारा बुलाया जाता है।

Args Args तर्क है जो आरंभिक कार्य को प्रदान करता है।

फ़ंक्शन को {ok,Pid,State} , जहां Pid सबसिस्टम में मुख्य प्रक्रिया का pid है और State कोई भी शब्द है।

यदि बाद में Pid किसी कारण के Reason समाप्त हो जाता है, तो पर्यवेक्षक पुल का कारण Reason साथ भी समाप्त हो जाता है। अगर बाद में सुपरवाइजर ब्रिज को उसके सुपरवाइजर द्वारा Reason साथ रोका जाता है, तो वह Module:terminate(Reason,State) को समाप्त करने के लिए कहता है।

यदि इनिशियलाइज़ेशन विफल हो जाता है, तो फंक्शन {error,Error} को वापस करना है, जहाँ Error कोई टर्म है, या ignore

मॉड्यूल: समाप्त (कारण, राज्य)

प्रकार

यह फ़ंक्शन सुपरवाइज़र ब्रिज द्वारा तब बुलाया जाता है जब यह समाप्त होने वाला होता है। यह Module:init/1 के विपरीत होना है Module:init/1 और सबसिस्टम को रोकना और कोई आवश्यक सफाई करना। रिटर्न वैल्यू को नजरअंदाज किया जाता है।

यदि पर्यवेक्षक पुल को उसके पर्यवेक्षक द्वारा समाप्त किया जाता है तो Reason shutdown है। यदि पर्यवेक्षक पुल समाप्त हो जाता है क्योंकि ए लिंक्ड प्रक्रिया (सबसिस्टम की मुख्य प्रक्रिया के अलावा) ने Term साथ समाप्त कर दिया है, तो उसे Term

State Module:init/1 के वापसी मूल्य से लिया जाता है Module:init/1

यह भी देखें

supervisor(3) , sys(3)