BidirectionalStream

abstract class BidirectionalStream


فئة لإرسال البيانات واستلامها بشكل ثنائي الاتجاه عبر اتصالات HTTP/2 أو QUIC. تم الإنشاء بواسطة Builder.

ملاحظة: هناك قيود على ترتيب طرق BidirectionalStream، يُرجى الاطّلاع على الطرق الفردية لمعرفة وصف القيود.

ملخّص

الأنواع المتداخلة

أداة إنشاء لـ BidirectionalStream

فئة معاودة الاتصال المستخدَمة لتلقّي عمليات إعادة الاتصال من BidirectionalStream.

طُرق وضع التصميم العامة

الوظائف العامة

abstract Unit

يلغي البث.

abstract Unit

محو عمليات الكتابة المعلّقة

abstract Boolean

تعرض هذه السمة القيمة true إذا تم بدء البث بنجاح وتم إكماله الآن (نجح أو تم إلغاؤه أو تعذّر).

abstract Unit
read(buffer: ByteBuffer!)

يقرأ البيانات من مصدر البيانات إلى المخزن المؤقت المتوفّر.

abstract Unit

يبدأ البث، وتنتقل جميع الدوالّ الاحتياطية إلى الوسيطة callback التي تمّ تمريرها إلى الدالة الإنشائية BidirectionalStream.Builder.

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

تضيف هذه السمة البيانات التي سيتمّ كتابتها في البث.

طُرق وضع التصميم العامة

BidirectionalStream

BidirectionalStream()

الوظائف العامة

إلغاء

abstract fun cancel(): Unit

يلغي البث. يمكن الاتصال به في أي وقت بعد start. سيتم استدعاء onCanceled() عند اكتمال عملية الإلغاء ولن يتم استدعاء أيّ طرق أخرى لردّ النداء. إذا اكتمل البث أو لم يبدأ، لن يكون لاستدعاء cancel() أي تأثير ولن يتم استدعاء onCanceled(). إذا تم تمرير Executor أثناء إنشاء BidirectionalStream، سيتم تنفيذ المهام على سلسلة محادثات واحدة، وإذا تم استدعاء cancel() على سلسلة المحادثات هذه، لن يتم استدعاء أي طرق معالجة (باستثناء onCanceled()) بعد استدعاء cancel(). بخلاف ذلك، يمكن استدعاء طريقة رد اتصال واحدة على الأكثر بعد اكتمال cancel().

تصفية

abstract fun flush(): Unit

محو عمليات الكتابة المعلّقة يجب عدم استدعاء هذه الطريقة قبل onStreamReady(). بالنسبة إلى write() التي تم تأخيرها سابقًا، سيتم استدعاء onWriteCompleted() مقابلة عند إرسال المخزن المؤقت.

isDone

abstract fun isDone(): Boolean

تعرض هذه السمة القيمة true إذا تم بدء البث بنجاح وتم إكماله الآن (نجح أو تم إلغاؤه أو تعذّر).

المرتجعات
Boolean

true إذا بدأ البث المباشر بنجاح وانتهى الآن (اكتمل أو تم إلغاؤه أو تعذّر إتمامه)، وإلا سيتم عرض false للإشارة إلى أنّ البث المباشر لم يبدأ بعد أو أنّه قيد التقدّم.

قراءة

abstract fun read(buffer: ByteBuffer!): Unit

يقرأ البيانات من مصدر البيانات إلى المخزن المؤقت المتوفّر. يمكن استدعاؤها مرة واحدة على الأكثر استجابةً لكل استدعاء للطرق onStreamReady()/ onResponseHeadersReceived() و onReadCompleted() الخاصة بـ Callback. سيؤدي كل طلب إلى استدعاء إحدى طريقتَي Callback، وهما onReadCompleted() إذا تمت قراءة البيانات، أو onFailed() إذا حدث خطأ. تمت محاولة قراءة البيانات في buffer بدءًا من buffer.position(). يتم قراءة buffer.remaining() بايت كحدّ أقصى. يتم تعديل buffer.position() عند استدعاء onReadCompleted() للإشارة إلى مقدار البيانات التي تمت قراءتها.

المعلَمات
buffer: ByteBuffer!

ByteBuffer لقراءة البيانات. يجب أن يكون ByteBuffer مباشرًا. يجب ألا يقرأ برنامج التضمين أو يعدّل موضع المخزن المؤقت أو حدّه أو بياناته بين موضع المخزن المؤقت وحدّه إلى أن يتم استدعاء onReadCompleted() أو onCanceled() أو onFailed().

البدء

abstract fun start(): Unit

يبدأ البث، وتنتقل جميع الدوالّ الاحتياطية إلى الوسيطة callback التي تمّ تمريرها إلى الدالة الإنشائية BidirectionalStream.Builder. يجب استدعاؤه مرة واحدة فقط.

write

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

تضيف هذه السمة البيانات التي سيتمّ كتابتها في البث. لن يتم إرسال البيانات إلا بعد استدعاء flush(). سيؤدي كل طلب إلى استدعاء إحدى طرق Callback، وهي الطريقة onWriteCompleted() في حال إرسال البيانات، أو الطريقة onFailed() في حال حدوث خطأ.

بدأت محاولة كتابة البيانات من buffer بدءًا من buffer.position(). سيتم كتابة buffer.remaining() بايت. لن يتم استدعاء onWriteCompleted() إلا عند كتابة ByteBuffer الكامل.

المعلَمات
buffer: ByteBuffer!

ByteBuffer الذي سيتم كتابة البيانات منه يجب أن يكون ByteBuffer مباشرًا. يجب ألا يقرأ برنامج التضمين أو يعدّل موضع المخزن المؤقت أو حدّه أو بياناته بين موضع المخزن المؤقت وحدّه إلى أن يتم استدعاء onWriteCompleted() أو onCanceled() أو onFailed(). يمكن أن يكون فارغًا عندما تكون قيمة endOfStream هي true.

endOfStream: Boolean

إذا كانت قيمة true هي true، يعني ذلك أنّ buffer هو آخر مخزن مؤقت سيتمّت كتابته، وبعد كتابته، سيتمّ إغلاق البث من جهة العميل، ما يؤدي إلى إغلاق البث جزئيًا أو إغلاقه بالكامل إذا كان قد تمّ إغلاقه من الجهة البعيدة.