2013-11-02 6 views
5

मैं नेटटी -4 का उपयोग कर एक सिस्टम लिखना चाहता हूं जहां एक सर्वर को एक चैनल से अनुरोध प्राप्त होता है (में में), एक ट्रांसफॉर्म और संभावित रूप से परिणाम को दूसरे चैनल पर डाल देता है एक और बैकएंड-सिस्टम ( से बाहर)।दो नेटटी चैनलों के बीच बैक-प्रेशर का प्रचार करें

लेकिन मैं चैनल में के लिए बाहर चैनल से वापस दबाव प्रचार करने के लिए चाहते हैं? विशेष रूप से — क्योंकि नेटटी एपीआई एसिंक्रोनस — पर अब अवरुद्ध नहीं होने पर मुझे अधिसूचित कैसे किया जा सकता है; और में रोकें/फिर से शुरू करें?

आंशिक समाधान

मेरा मानना ​​है कि बता सकते हैं जब बाहर चैनल channel.isWritable() साथ लिखने के लिए तैयार है।

this question का उत्तर AUTO_READ को अक्षम करने का उल्लेख करता है, लेकिन फिर मुझे विश्वास है कि मुझे पढ़ने के लिए चैनल को मतदान करने का प्रभारी होना होगा। मैं उस — के बारे में खुश नहीं हूं जब तक जब मैं इसे पढ़ने के लिए तैयार हूं तो मुझे एक संदेश प्राप्त हो सकता है। इस बिंदु पर, नेटटी का उपयोग करने की उपयोगिता केवल नो-कॉपी बफर और बाइट टॉमेज डिकोडर सुपरक्लास है।

उत्तर

5

इगोर के उत्तर में जोड़ने के लिए - आपके पास पढ़ने को पुनः सक्रिय करने के लिए कुछ विकल्प हैं। पहला, दिखाया गया है कि here का अर्थ गंतव्य चैनल पर चैनलवाइटिबिलिटी चेंज किया गया ईवेंट कैप्चर करना है। आप चैनल की स्थिति की जांच कर सकते हैं और स्रोत चैनल पर ऑटो पढ़ने को सक्षम कर सकते हैं।

वैकल्पिक रूप से प्रॉक्सी उदाहरण लिखने और फ़्लश करने के लिए एक लेखन पूर्णता श्रोता सेट करने से पता चलता है। यह तकनीक भी काम करती है लेकिन नेटटी के उच्च/निम्न जल चिह्न क्यूइंग सिस्टम का लाभ नहीं लेती है क्योंकि आपको केवल यह बताया जाएगा कि लिखने के बाद नेटवर्क बफर पर लिखा गया है।

3

ठीक है, आप आउट चैनल पर AUTO_READ को अक्षम कर सकते हैं जब आउट लिखने योग्य नहीं होता है और आउट तैयार होने पर ऑटोऑडैड को फिर से सक्षम कर सकता है। यहां कोई मतदान की आवश्यकता नहीं है।

संबंधित मुद्दे