BidirectionalStream

public abstract class BidirectionalStream


यह क्लास, एचटीटीपी/2 या QUIC कनेक्शन पर, डेटा को दोनों दिशाओं में भेजने और पाने के लिए इस्तेमाल की जाती है. इसे Builder ने बनाया है.

ध्यान दें: BidirectionalStream के तरीकों पर क्रम से जुड़ी पाबंदियां लागू होती हैं. पाबंदियों के बारे में जानने के लिए, कृपया अलग-अलग तरीके देखें.

खास जानकारी

नेस्ट किए गए टाइप

public abstract class BidirectionalStream.Builder

BidirectionalStream के लिए बिल्डर.

public abstract class BidirectionalStream.Callback

यह कॉलबैक क्लास, BidirectionalStream से कॉलबैक पाने के लिए इस्तेमाल की जाती है.

सार्वजनिक कंस्ट्रक्टर

पब्लिक मेथड

abstract void

स्ट्रीम रद्द करता है.

abstract void

पूरे नहीं किए गए राइट को फ़्लश करता है.

abstract boolean

अगर स्ट्रीम को सफलतापूर्वक शुरू किया गया है और अब वह पूरी हो गई है (सफल, रद्द या फ़ेल), तो true दिखाता है.

abstract void
read(ByteBuffer buffer)

स्ट्रीम से डेटा को दिए गए बफ़र में पढ़ता है.

abstract void

स्ट्रीम शुरू करता है. सभी कॉलबैक, BidirectionalStream.Builder के कंस्ट्रक्टर को पास किए गए callback आर्ग्युमेंट पर जाते हैं.

abstract void
write(ByteBuffer buffer, boolean endOfStream)

स्ट्रीम में लिखा जाने वाला डेटा जोड़ता है.

सार्वजनिक कंस्ट्रक्टर

BidirectionalStream

public BidirectionalStream()

पब्लिक मेथड

cancel

public abstract void cancel()

स्ट्रीम रद्द करता है. start के बाद, इसे कभी भी कॉल किया जा सकता है. रद्द करने की प्रोसेस पूरी होने पर, onCanceled() को कॉल किया जाएगा. इसके बाद, कोई भी कॉलबैक मेथड कॉल नहीं की जाएगी. अगर स्ट्रीम पूरी हो गई है या शुरू नहीं हुई है, तो cancel() को कॉल करने पर कोई असर नहीं पड़ेगा. साथ ही, onCanceled() को कॉल नहीं किया जाएगा. अगर BidirectionalStream के कंस्ट्रक्शन के दौरान पास किया गया Executor, टास्क को एक ही थ्रेड पर चलाता है और उस थ्रेड पर cancel() को कॉल किया जाता है, तो cancel() को कॉल करने के बाद, लिसनर की कोई भी मेथड (सिर्फ़ onCanceled() को छोड़कर) कॉल नहीं की जाएगी. इसके अलावा, cancel() के पूरा होने के बाद, ज़्यादा से ज़्यादा एक कॉलबैक मेथड को कॉल किया जा सकता है.

flush

public abstract void flush()

पूरे नहीं किए गए राइट को फ़्लश करता है. इस मेथड को onStreamReady() से पहले कॉल नहीं किया जाना चाहिए. पहले डिले किए गए write() के लिए, बफ़र भेजे जाने पर, उससे जुड़ा onWriteCompleted() कॉल किया जाएगा.

isDone

public abstract boolean isDone()

अगर स्ट्रीम को सफलतापूर्वक शुरू किया गया है और अब वह पूरी हो गई है (सफल, रद्द या फ़ेल), तो true दिखाता है.

रिटर्न
boolean

अगर स्ट्रीम को सफलतापूर्वक शुरू किया गया है और अब वह पूरी हो गई है (पूरी, रद्द या फ़ेल), तो true दिखाता है. इसके अलावा, अगर स्ट्रीम अब तक शुरू नहीं हुई है या प्रोसेस में है, तो false दिखाता है.

read

public abstract void read(ByteBuffer buffer)

स्ट्रीम से डेटा को दिए गए बफ़र में पढ़ता है. Callback की onStreamReady()/ onResponseHeadersReceived() और onReadCompleted() मेथड के हर कॉल के जवाब में, इसे ज़्यादा से ज़्यादा एक बार कॉल किया जा सकता है. हर कॉल के बाद, अगर डेटा पढ़ा जाता है, तो Callback की onReadCompleted() मेथड को कॉल किया जाएगा. वहीं, अगर कोई गड़बड़ी होती है, तो उसकी onFailed() मेथड को कॉल किया जाएगा. buffer.position() से शुरू करके, buffer में डेटा पढ़ने की कोशिश की जाती है. ज़्यादा से ज़्यादा buffer.remaining() बाइट पढ़ी जाती हैं. onReadCompleted() को कॉल करने पर, buffer.position() को अपडेट किया जाता है. इससे पता चलता है कि कितना डेटा पढ़ा गया है.

पैरामीटर
ByteBuffer buffer

वह ByteBuffer जिसमें डेटा पढ़ा जाना है. यह डायरेक्ट ByteBuffer होना चाहिए. जब तक onReadCompleted(), onCanceled() या onFailed() को कॉल नहीं किया जाता, तब तक एम्बेडर को बफ़र की पोज़िशन, लिमिट या उसकी पोज़िशन और लिमिट के बीच मौजूद डेटा को पढ़ना या उसमें बदलाव नहीं करना चाहिए.

start

public abstract void start()

स्ट्रीम शुरू करता है. सभी कॉलबैक, BidirectionalStream.Builder के कंस्ट्रक्टर को पास किए गए callback आर्ग्युमेंट पर जाते हैं. इसे सिर्फ़ एक बार कॉल किया जाना चाहिए.

write

public abstract void write(ByteBuffer buffer, boolean endOfStream)

स्ट्रीम में लिखा जाने वाला डेटा जोड़ता है. flush() को कॉल करने के बाद ही डेटा भेजा जाएगा. हर कॉल के बाद, अगर डेटा भेजा जाता है, तो Callback की onWriteCompleted() मेथड को कॉल किया जाएगा. वहीं, अगर कोई गड़बड़ी होती है, तो उसकी onFailed() मेथड को कॉल किया जाएगा.

buffer.position() से शुरू करके, buffer से डेटा लिखने की कोशिश की जाती है. buffer.remaining() बाइट लिखी जाएंगी. onWriteCompleted() को सिर्फ़ तब कॉल किया जाएगा, जब पूरा ByteBuffer लिख लिया जाएगा.

पैरामीटर
ByteBuffer buffer

वह ByteBuffer जिससे डेटा लिखा जाना है. यह डायरेक्ट ByteBuffer होना चाहिए. जब तक onWriteCompleted(), onCanceled() या onFailed() को कॉल नहीं किया जाता, तब तक एम्बेडर को बफ़र की पोज़िशन, लिमिट या उसकी पोज़िशन और लिमिट के बीच मौजूद डेटा को पढ़ना या उसमें बदलाव नहीं करना चाहिए. endOfStream की वैल्यू true होने पर, यह खाली हो सकता है.

boolean endOfStream

अगर इसकी वैल्यू true है, तो buffer वह आखिरी बफ़र है जिसे लिखा जाना है. इसके बाद, क्लाइंट की ओर से स्ट्रीम बंद हो जाती है. इससे, स्ट्रीम आंशिक रूप से बंद हो जाती है. अगर रिमोट साइड पहले ही बंद हो चुकी है, तो स्ट्रीम पूरी तरह से बंद हो जाती है.