BidirectionalStream

abstract class BidirectionalStream


מחלקת שליחה וקבלה דו-כיוונית של נתונים בחיבורי HTTP/2 או QUIC. נוצר על ידי Builder.

הערה: יש הגבלות על סדר השימוש בשיטות של BidirectionalStream. אפשר לעיין בשיטות השונות כדי לקבל תיאור של ההגבלות.

סיכום

סוגי רכיבים שהוצבו בתוך רכיבים אחרים

‫Builder של BidirectionalStream.

מחלקת Callback שמשמשת לקבלת קריאות חוזרות מ-BidirectionalStream.

‫constructors ציבוריים

פונקציות ציבוריות

abstract Unit

ביטול השידור.

abstract Unit

מבצע Flush לכתיבות בהמתנה.

abstract Boolean

הפונקציה מחזירה true אם הסטרימינג התחיל בהצלחה והסתיים (הצליח, בוטל או נכשל).

abstract Unit
read(buffer: ByteBuffer!)

קריאת נתונים מהסטרימינג אל המאגר שצוין.

abstract Unit

מתחיל את הסטרימינג, כל הקריאות החוזרות עוברות לארגומנט callback שמועבר לקונסטרוקטור של BidirectionalStream.Builder.

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

הוספת נתונים לכתיבה לזרם.

‫constructors ציבוריים

BidirectionalStream

BidirectionalStream()

פונקציות ציבוריות

ביטול

abstract fun cancel(): Unit

ביטול השידור. אפשר להתקשר בכל שלב אחרי start. הקריאה החוזרת (callback) onCanceled() תופעל כשהביטול יושלם, ולא יופעלו עוד שיטות של קריאה חוזרת. אם הסטרימינג הסתיים או לא התחיל, לקריאה ל-cancel() אין השפעה והקריאה ל-onCanceled() לא תופעל. אם Executor שמועבר במהלך בניית BidirectionalStream מפעיל משימות בשרשור יחיד, ו-cancel() מופעל בשרשור הזה, לא יופעלו שיטות של מאזין (חוץ מ-onCanceled()) אחרי הפעלת cancel(). אחרת, יכול להיות שתופעל שיטת קריאה חוזרת אחת לכל היותר אחרי ש-cancel() יסיים את הפעולה.

לרוקן מידע (Flush)

abstract fun flush(): Unit

מבצע Flush לכתיבות בהמתנה. אין להפעיל את ה-method הזו לפני onStreamReady(). במקרה של write()s שהועברו באיחור, יופעל 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. אפשר להפעיל אותה רק פעם אחת.

לכתוב

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, אז buffer הוא המאגר האחרון שייכתב, ואחרי הכתיבה, הסטרים ייסגר מצד הלקוח, וכתוצאה מכך הסטרים ייסגר חלקית או ייסגר לגמרי אם הצד המרוחק כבר נסגר.