BidirectionalStream

public abstract class BidirectionalStream


فئة لإرسال البيانات واستلامها بشكل ثنائي الاتجاه عبر اتصالات HTTP/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

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

abstract void
write(ByteBuffer buffer, boolean endOfStream)

إضافة بيانات ليتم كتابتها في البث

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

BidirectionalStream

public BidirectionalStream()

الإجراءات العامة

cancel

public abstract void cancel()

إلغاء البث يمكن استدعاء هذه الطريقة في أي وقت بعد start. سيتم استدعاء onCanceled() عند اكتمال عملية الإلغاء ولن يتم استدعاء أي طرق أخرى لمعاودة الاتصال. إذا اكتمل البث أو لم يبدأ، لن يكون لاستدعاء cancel() أي تأثير ولن يتم استدعاء onCanceled(). إذا كان Executor الذي تم تمريره أثناء إنشاء BidirectionalStream يُشغِّل المهام على سلسلة محادثات واحدة، وتم استدعاء cancel() على هذه السلسلة، لن يتم استدعاء أي طرق للمستمع (باستثناء onCanceled()) بعد استدعاء cancel(). بخلاف ذلك، يمكن استدعاء طريقة رد اتصال واحدة على الأكثر بعد اكتمال 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)

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

المعلَمات
ByteBuffer buffer

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

start

public abstract void start()

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

write

public abstract void write(ByteBuffer buffer, boolean endOfStream)

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

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

المعلَمات
ByteBuffer buffer

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

boolean endOfStream

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