में वैश्विक चर बनाने के लिए कैसे मैं पैकेट फ़िल्टर करने के लिए एक ejabberd मॉड्यूल लिख रहा हूँ। मुझे gen_mod:get_module_opt()
का उपयोग करके कुछ कॉन्फ़िगरेशन खींचने के लिए होस्टनाम प्राप्त करने की आवश्यकता है।एरलांग
मैं 4 महत्वपूर्ण कार्य है:
start(Host, _Opt)
: यह मेरा मॉड्यूल लोड करने के लिए एक ejabberd कार्य है। मुझेHost
परमाणुfilter_packet({From, To, XML})
प्राप्त होता है: यह मेरा पैकेट फ़िल्टर हुक है। मैं इस समारोह में कस्टम पैरा नहीं पारित कर सकता हूं, क्योंकि यह ejabberd में एक हुक है।get_translation(XmlData)
:filter_packet()
एक पाशfetch_translation(XmlData)
मेंget_translation()
कॉल:get_translation()
से रिकर्सिवली कहा जाता है। यह वह जगह है जहां मैंgen_mod:get_module_opt()
पर कॉल कर रहा हूं, और इसलिएHost
की आवश्यकता है।
मेरा प्रश्न है, ताकि fetch_translation
भी पहुंच सकते हैं कि कैसे मैं start()
से Host
लेने के लिए और एक वैश्विक चर में रख सकते हैं?
Thx जेड। मॉड्यूल ठीक से संकलित करता है लेकिन 'ets: new (my_table, [name_table, संरक्षित, सेट, {keypos, 1}]) के लिए' बैडगा 'त्रुटि देता है,' – Adil
यदि तालिका 'my_table' मौजूद है, तो आपको एक बैडगा मिलेगा । आपको या तो जांचने की आवश्यकता है कि तालिका पहले से मौजूद है या नहीं, इसे एक कोशिश-पकड़ ब्लॉक – Zed
में लपेटें, मैं ऊपर दिए गए को छोड़कर कहीं भी 'my_table' नहीं बना रहा हूं। – Adil