Erlang 21

ssh_client_channel




erlang

ssh_client_channel

मॉड्यूल

ssh_client_channel

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

-behaviour (ssh_client_channel)। (Ssh_channel की जगह)

विवरण

ध्यान दें

यह मॉड्यूल ssh_channel को प्रतिस्थापित करता है।

पुराना मॉड्यूल अभी भी संगतता के लिए उपलब्ध है, लेकिन नए कार्यक्रमों के लिए उपयोग नहीं किया जाना चाहिए। कुछ त्रुटि सुधारों को छोड़कर पुराने मॉड्यूल को बनाए नहीं रखा जाएगा

SSH सेवाओं (क्लाइंट और सर्वर) को उन चैनलों के रूप में लागू किया जाता है जो SSH कनेक्शन पर मल्टीप्लेक्स किए जाते हैं और SSH Connection Protocol पर संचार करते हैं। यह मॉड्यूल कॉलबैक एपीआई प्रदान करता है जो क्लाइंट के लिए सामान्य चैनल पहलुओं का ध्यान रखता है, जैसे प्रवाह नियंत्रण और निकट संदेश। यह कॉलबैक फ़ंक्शंस को सेवा (एप्लिकेशन) के विशिष्ट भागों की देखभाल करने देता है। यह व्यवहार यह भी सुनिश्चित करता है कि चैनल प्रक्रिया एक OTP- प्रक्रिया के प्रमुख का सम्मान करती है ताकि यह एक पर्यवेक्षक वृक्ष का हिस्सा हो सके। यह एक सबसिस्टम को लागू करने वाली चैनल प्रक्रियाओं की आवश्यकता है जो ssh अनुप्रयोगों के पर्यवेक्षक पेड़ में जोड़ा जाएगा।

ध्यान दें

जब -behaviour(ssh_server_channel) लिए एक ssh सबसिस्टम लागू करते हैं, तो -behaviour(ssh_server_channel) (इसके स्थान पर ssh_daemon_channel) का उपयोग करें।

नहीं

इस व्यवहार को लागू करने वाले मॉड्यूल में कार्य को एक मॉड्यूल के बाहर नहीं कहा जाना चाहिए!

निर्यात

कॉल (ChannelRef, Msg) ->
कॉल (ChannelRef, Msg, टाइमआउट) -> उत्तर | {त्रुटि, कारण}

प्रकार

जैसा कि start_link/4 द्वारा लौटाया गया है

एक संदेश भेजने और एक जवाब आने तक प्रतीक्षा करके, या एक टाइम-आउट होने तक चैनल प्रक्रिया के लिए एक तुल्यकालिक कॉल करता है। संदेश को संभालने के लिए चैनल Module:handle_call/3 को कॉल करता है। यदि चैनल प्रक्रिया मौजूद नहीं है, तो {error, closed} लौटा दी जाती है।

कास्ट (ChannelRef, Msg) -> ठीक है

प्रकार

जैसा कि start_link/4 द्वारा लौटाया गया है

चैनल प्रक्रिया के लिए एक अतुल्यकालिक संदेश भेजता है और गंतव्य नोड या चैनल प्रक्रिया मौजूद नहीं होने पर अनदेखा करते हुए तुरंत वापस लौट आता है। चैनल संदेश को संभालने के लिए Module:handle_cast/2 को कॉल करता है।

enter_loop (स्थिति) -> _

प्रकार

जैसा कि init/1 द्वारा लौटाया गया है

एक मौजूदा प्रक्रिया को ssh_client_channel (ssh_channel की जगह) प्रक्रिया बनाता है। वापस नहीं आता है, इसके बजाय कॉलिंग प्रक्रिया ssh_client_channel (बदले ssh_channel) प्रक्रिया में प्रवेश करती है, लूप प्राप्त करती है और एक ssh_client_channel प्रक्रिया बन ssh_client_channel है। यह प्रक्रिया proc_lib में प्रारंभ कार्यों में से एक का उपयोग करके शुरू की गई proc_lib , proc_lib(3) में proc_lib(3) मैनुअल पेज देखें। उपयोगकर्ता प्रक्रिया के किसी भी आरंभीकरण के लिए जिम्मेदार है और init/1 को कॉल करना होगा।

init (विकल्प) -> {ठीक है, राज्य} | {ओके, स्टेट, टाइमआउट} | {रोकें, कारण}

प्रकार

निम्नलिखित विकल्प मौजूद होने चाहिए:

{channel_cb, atom()}

वह मॉड्यूल जो चैनल व्यवहार को लागू करता है।

{init_args(), list()}

कॉलबैक मॉड्यूल के init फ़ंक्शन के तर्क की सूची।

{cm, ssh:connection_ref()}

ssh कनेक्शन का संदर्भ जैसा कि ssh:connect/3 द्वारा दिया गया है ssh:connect/3

{channel_id, ssh:channel_id()}

ssh चैनल की आईडी ssh_connection:session_channel/2,4 द्वारा लौटा दी गई ssh_connection:session_channel/2,4

ध्यान दें

यह फ़ंक्शन आमतौर पर उपयोगकर्ता द्वारा नहीं बुलाया जाता है। उपयोगकर्ता को केवल तभी कॉल करने की आवश्यकता होती है जब चैनल प्रक्रिया को start/4 या start_link/4 को कॉल start/4 बजाय proc_lib सहायता से शुरू करने की आवश्यकता होती है।

उत्तर (ग्राहक, उत्तर) -> _

प्रकार

इस फ़ंक्शन का उपयोग चैनल द्वारा call/[2,3] नामक ग्राहक को जवाब भेजने के लिए किया जा सकता है जब उत्तर को Module:handle_call/3 के रिटर्न मान में परिभाषित नहीं किया जा सकता है Module:handle_call/3

Client को कॉलबैक फ़ंक्शन handle_call/3 लिए प्रदान किए गए तर्क From होना चाहिए। Reply एक मनमाना शब्द है, जिसे call/[2,3]. के रिटर्न वैल्यू के रूप में क्लाइंट को वापस दिया जाता है call/[2,3].

प्रारंभ (SshConnection, ChannelId, ChannelCb, CbInitArgs) ->
start_link (SshConnection, ChannelId, ChannelCb, CbInitArgs) -> {ठीक है, ChannelRef} | {त्रुटि, कारण}

प्रकार

जैसा कि ssh:connect/3 द्वारा लौटाया गया ssh:connect/3 ssh_connection:session_channel/2,4 द्वारा लौटाया गया ssh_connection:session_channel/2,4

चैनल के सेवा-विशिष्ट भागों को लागू करने वाले मॉड्यूल का नाम।

कॉलबैक मॉड्यूल में init फ़ंक्शन के लिए तर्क सूची।

एक प्रक्रिया शुरू करता है जो एक SSH चैनल को संभालती है। इसे आंतरिक रूप से, ssh डेमॉन द्वारा, या स्पष्ट रूप से ssh क्लाइंट कार्यान्वयन द्वारा कहा जाता है। व्यवहार trap_exit ध्वज को true सेट करता true

कॉलबैक कार्य

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

कॉलबैक टाइमआउट

कॉलबैक फ़ंक्शंस द्वारा लौटाए जाने वाले टाइमआउट मानों का एक ही शब्दार्थ होता है जैसे कि एक gen_server । यदि टाइम-आउट होता है, तो handle_msg/2 को handle_msg(timeout, State) कहा जाता है।

निर्यात

मॉड्यूल: code_change (OldVsn, State, Extra) -> {ठीक है, NewState}

प्रकार

अपग्रेड के मामले में, OldVsn Vsn , और डाउनग्रेड के मामले में, OldVsn {down,Vsn} Vsn को कॉलबैक मॉड्यूल Module के पुराने संस्करण के vsn विशेषता (एस) द्वारा परिभाषित किया गया है। यदि ऐसी कोई विशेषता परिभाषित नहीं है, तो संस्करण BEAM फ़ाइल का चेकसम है।

चैनल की आंतरिक स्थिति।

अद्यतन निर्देश के {advanced,Extra} भाग से "जैसा है" पास किया गया।

कोड बदलने पर स्थिति को परिवर्तित करता है।

इस फ़ंक्शन को क्लाइंट-साइड चैनल द्वारा बुलाया जाता है, जब इसे रिलीज अपग्रेड या डाउनग्रेड के दौरान अपनी आंतरिक स्थिति को अपडेट करना होता है, अर्थात, जब निर्देश {update,Module,Change,...} , जहां Change={advanced,Extra} , appup फाइल में दिया गया है। अधिक जानकारी के लिए, System Documentation में धारा 9.11.6 रिलीज़ हैंडलिंग निर्देश देखें।

ध्यान दें

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

मॉड्यूल: init (आर्ग्स) -> {ठीक है, राज्य} | {ओके, स्टेट, टाइमआउट ()} | {रोकें, कारण}

प्रकार

start_link/4 लिए अंतिम तर्क।

यदि आवश्यक हो तो आवश्यक आरंभीकरण करता है और आरंभिक चैनल की स्थिति को लौटाता है।

टाइम-आउट पर अधिक विस्तृत जानकारी के लिए, सेक्शन Callback timeouts देखें।

मॉड्यूल: handle_call (Msg, से, राज्य) -> परिणाम

प्रकार

उत्तर देने के लिए तर्क के रूप में उपयोग किया जाना है reply/2 call/[2,3]. का वापसी मूल्य होगा call/[2,3].

कॉल call/[2,3]. द्वारा भेजे गए संदेश call/[2,3].

टाइम-आउट पर अधिक विस्तृत जानकारी के लिए, सेक्शन Callback timeouts देखें।

मॉड्यूल: handle_cast (Msg, राज्य) -> परिणाम

प्रकार

cast/2 कॉल करके भेजे गए संदेशों को संभालता है।

टाइम-आउट पर अधिक विस्तृत जानकारी के लिए, सेक्शन Callback timeouts देखें।

मॉड्यूल: handle_msg (Msg, राज्य) -> {ठीक है, राज्य} | {रोक, ChannelId, राज्य}

प्रकार

एसएसएच कनेक्शन प्रोटोकॉल के अलावा अन्य संदेशों को संभालता है, कॉल, या चैनल को भेजे गए संदेश।

संभावित एर्लांग 'EXIT' संदेशों को इस फ़ंक्शन द्वारा नियंत्रित किया जाना है और सभी चैनलों को निम्नलिखित संदेश को संभालना है।

{ssh_channel_up, ssh:channel_id(), ssh:connection_ref()}

यह पहला संदेश है जिसे चैनल प्राप्त करता है। यह init/1 फ़ंक्शन रिटर्न के ठीक पहले भेजा जाता है। यह विशेष रूप से उपयोगी है यदि सर्वर क्लाइंट को संदेश भेजना चाहता है, तो पहले उसे संदेश प्राप्त किए बिना। यदि संदेश आपके विशेष परिदृश्य के लिए उपयोगी नहीं है, तो तुरंत {ok, State} वापस करके इसे अनदेखा {ok, State}

मॉड्यूल: handle_ssh_msg (Msg, राज्य) -> {ठीक है, राज्य} | {रोक, ChannelId, राज्य}

प्रकार

SSH कनेक्शन प्रोटोकॉल संदेशों को संभालता है जिन्हें सेवा-विशिष्ट ध्यान देने की आवश्यकता हो सकती है। विवरण के लिए, ssh_connection:event()

निम्नलिखित संदेश ssh_client_channel व्यवहार द्वारा ध्यान रखा जाता है।

{closed, ssh:channel_id()}

चैनल व्यवहार दूसरी तरफ एक करीबी संदेश भेजता है, अगर ऐसा संदेश पहले ही नहीं भेजा गया है। फिर यह चैनल को normal कारण normal

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

प्रकार

इस फ़ंक्शन को एक चैनल प्रक्रिया द्वारा बुलाया जाता है जब यह समाप्त होने वाला होता है। इससे पहले कि यह फ़ंक्शन कहा जाता है, ssh_connection:close/2 कहा जाता है, अगर इसे पहले नहीं बुलाया गया है। यह फ़ंक्शन किसी भी आवश्यक सफाई को पूरा करता है। जब यह वापस आता है, तो चैनल प्रक्रिया Reason साथ समाप्त हो जाती है। रिटर्न वैल्यू को नजरअंदाज किया जाता है।