BidirectionalStream

abstract class BidirectionalStream


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

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

खास जानकारी

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

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

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

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

सार्वजनिक फ़ंक्शन

abstract Unit

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

abstract Unit

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

abstract Boolean

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

abstract Unit
read(buffer: ByteBuffer!)

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

abstract Unit

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

abstract Unit
write(buffer: ByteBuffer!, endOfStream: Boolean)

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

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

BidirectionalStream

BidirectionalStream()

सार्वजनिक फ़ंक्शन

cancel

abstract fun cancel(): Unit

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

flush

abstract fun flush(): Unit

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

isDone

abstract fun isDone(): Boolean

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

रिटर्न
Boolean

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

read

abstract fun read(buffer: ByteBuffer!): Unit

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

पैरामीटर
buffer: ByteBuffer!

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

start

abstract fun start(): Unit

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

write

abstract fun write(buffer: ByteBuffer!, endOfStream: Boolean): Unit

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

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

पैरामीटर
buffer: ByteBuffer!

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

endOfStream: Boolean

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