Erlang 21

diameter_tcp




erlang

diameter_tcp

मॉड्यूल

diameter_tcp

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

टीसीपी पर व्यास परिवहन।

विवरण

यह मॉड्यूल gen_tcp(3) का उपयोग करके टीसीपी पर व्यास परिवहन को लागू करता है। इसे एक transport_module विकल्प को diameter:add_transport/2 के मान के रूप में निर्दिष्ट किया जा सकता है diameter:add_transport/2 और diameter:add_transport/2 diameter_transport(3) में प्रलेखित व्यवहार को लागू करता है। टीएलएस सुरक्षा का समर्थन किया जाता है, या तो अपग्रेड निम्नलिखित क्षमताओं के आदान-प्रदान के रूप में या कनेक्शन स्थापना पर।

ध्यान दें कि एसएलएस आवेदन टीएलएस के लिए आवश्यक है और व्यास ट्रांसपोर्ट पर टीएलएस क्षमता को कॉन्फ़िगर करने से पहले शुरू किया जाना चाहिए।

निर्यात

start ({प्रकार, Ref}, Svc, [Opt]] -> {ok, Pid} | {ओके, पिड, [LAddr]} | {त्रुटि, कारण}

प्रकार

diameter_transport(3) द्वारा आवश्यक प्रारंभ समारोह।

विकल्प raddr और raddr एक ट्रांसपोर्ट परिवहन के लिए रिमोट एड्रेस और पोर्ट को निर्दिष्ट करते हैं और एक सुनने के परिवहन के लिए मान्य नहीं हैं।

विकल्प accept एक सुनने के परिवहन के लिए दूरस्थ पते निर्दिष्ट करता है और एक कनेक्टिंग परिवहन के लिए मान्य नहीं है। यदि निर्दिष्ट किया गया है, तो एक दूरस्थ पता जो निर्दिष्ट पते में से किसी एक से मेल नहीं खाता है, तो कनेक्शन का निरस्त होने का कारण बनता है। एकाधिक accept विकल्प निर्दिष्ट किए जा सकते हैं। एक स्ट्रिंग-वैल्यू Match जो एक पते के रूप में पार्स नहीं करता है, एक नियमित अभिव्यक्ति के रूप में व्याख्या की जाती है।

विकल्प ssl_options को एक ऐसे परिवहन के लिए निर्दिष्ट किया जाना चाहिए जो TLS का समर्थन करना चाहिए: कनेक्शन स्थापना के तुरंत बाद TLS हैंडशेक में true परिणाम का मान जबकि list() ssl:connect/2 को दिए जाने वाले विकल्पों को निर्दिष्ट ssl:connect/2 या ssl:ssl_accept/2 क्षमताओं के विनिमय के बाद अगर टीएलएस से बातचीत की जाती है।

विकल्प fragment_timer समयावधि को निर्दिष्ट करता है, मिलीसेकंड में, एक टाइमर का उपयोग आने वाली बाइट स्ट्रीम से संदेशों को फ्लश करने के लिए किया जाता है, भले ही इसके व्यास हेडर के संदेश लंबाई क्षेत्र में संकेतित बाइट्स की संख्या अभी तक जमा नहीं हुई हो, ऐसा संदेश प्राप्त होता है अतिरिक्त बाइट्स के स्वागत के बिना लगातार दो समय के बाद परिवहन इंटरफ़ेस। 1000 तक की कमी।

विकल्प sender निर्दिष्ट करता है कि आउटगोइंग संदेशों को भेजने के लिए एक समर्पित प्रक्रिया का उपयोग करें या नहीं, जो अवरुद्ध अवरोधन रिसेप्शन की संभावना से बचता है। false अवहेलना। यदि true सेट किया गया true तो एक message_cb जो बिना बाउंड के मैसेज भेजने की प्रक्रिया में कतार में लगने वाले मैसेज की संभावना को टाल देता है।

विकल्प message_cb एक कॉलबैक निर्दिष्ट करता है जो आने वाले और बाहर जाने वाले संदेशों पर लगाया जाता है, जिसका उपयोग प्रवाह नियंत्रण को लागू करने के लिए किया जा सकता है। इसे दो तर्कों पर लागू किया जाता है: कॉलबैक के लिए कारण recv वाला एक परमाणु (पूर्ण भेजे जाने के बाद send , वापस recv , या भेजना), और प्रश्न में संदेश (बाइनरी) recv , बाइनरी () या व्यास_पैकेट रिकॉर्ड या send रिकॉर्ड पर send , या जब एक आने वाले अनुरोध को त्याग दिया गया हो तो false पर)। इसे कार्यों की सूची और पूंछ के रूप में एक नया कॉलबैक वापस करना चाहिए; जैसे। [fun cb/3, State] । मान्य कार्य परमाणुओं को send या पुनः प्राप्त करना है, जिसके कारण निम्नलिखित संदेश-मूल्यवान कार्रवाई को भेजने / प्राप्त करने के लिए, एक संदेश भेजने / प्राप्त करने (प्राप्त करने के लिए) (बाइनरी () या व्यास_पैकेट रिकॉर्ड), या बूलियन () को पढ़ने पर सक्षम / अक्षम करने के लिए सॉकेट। एक से अधिक send / recv / मैसेज सीक्वेंस को एक ही कॉलबैक से लौटाया जा सकता है, और एक प्रारंभिक send / recv को छोड़ा जा सकता है, यदि कॉलबैक के पहले तर्क के रूप में वैल्यू पास हो। पढ़ना शुरू में सक्षम है, और false लौटने का मतलब यह नहीं है कि बाद में पुनः कॉलबैक नहीं हो सकते क्योंकि संदेश पहले से पढ़े जा सकते हैं। एक खाली पूंछ प्रचलित कॉलबैक के बराबर है। fun(ack, _) -> []; (_, Msg) -> [Msg] end बराबर कॉलबैक में fun(ack, _) -> []; (_, Msg) -> [Msg] end fun(ack, _) -> []; (_, Msg) -> [Msg] end

शेष विकल्प किसी भी ssl:connect/3 द्वारा स्वीकार किए जाते हैं ssl:connect/3 या gen_tcp:connect/3 कनेक्टिंग ट्रांसपोर्ट के लिए, या ssl:listen/2 या gen_tcp:listen/2 एक ट्रांसपोर्ट के लिए, यह निर्भर करता है कि क्या आप {ssl_options, true} पर निर्भर हैं। निर्दिष्ट किया गया है। विकल्प binary , packet और active निर्दिष्ट नहीं किए जा सकते। इसके अलावा, स्थानीय श्रवण पोर्ट को निर्दिष्ट करने के लिए एक सुनने के परिवहन के लिए विकल्प port निर्दिष्ट किया जा सकता है, डिफ़ॉल्ट को 3868 मानकीकृत किया जा रहा है। ध्यान दें कि विकल्प ip स्थानीय पते को निर्दिष्ट करता है।

एक ssl_options सूची निर्दिष्ट की जानी चाहिए अगर और केवल यदि प्रश्न में परिवहन Inband-Security-Id से 1 ( TLS ) निर्धारित किया गया है, तो या तो diameter:start_service/2 या diameter:add_transport/2 , ताकि परिवहन प्रक्रिया प्राप्त होगी क्षमताओं के आदान-प्रदान के बाद एक टीएलएस हैंडशेक के साथ शुरू करने या न करने की सूचना। टीएलएस-सक्षम परिवहन पर एक विकल्प सूची निर्दिष्ट करने में विफल जिसके लिए टीएलएस पर बातचीत की जाती है, जिससे टीएलएस हैंडशेक विफल हो जाएगा। TLS क्षमता निर्दिष्ट करने में विफल जब ssl_options निर्दिष्ट किया गया है, तो परिवहन प्रक्रिया के लिए एक अधिसूचना की प्रतीक्षा करने का कारण होगा जो आगामी नहीं होगा, जो अंततः RFC 3539 वॉचडॉग को कनेक्शन लेने का कारण बनेगा।

Svc में एक गैर-खाली Host-IP-Address सूची का पहला तत्व एक ip विकल्प निर्दिष्ट नहीं होने पर स्थानीय आईपी पता प्रदान करता है। स्थानीय पता या तो start/3 से वापस आ जाता है या ट्रांसपोर्ट इंटरफेस पर connected मैसेज में पास हो जाता है।

यह भी देखें

diameter(3) , gen_tcp(3) , gen_tcp(3) , gen_tcp(3) inet(3) , ssl(3)