BidirectionalStream

public abstract class BidirectionalStream


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

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

סיכום

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

public abstract class BidirectionalStream.Builder

‫Builder של BidirectionalStream.

public abstract class BidirectionalStream.Callback

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

‫constructors ציבוריים

‫methods ציבוריים

abstract void

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

abstract void

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

abstract boolean

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

abstract void
read(ByteBuffer buffer)

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

abstract void

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

abstract void
write(ByteBuffer buffer, boolean endOfStream)

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

‫constructors ציבוריים

BidirectionalStream

public BidirectionalStream()

‫methods ציבוריים

ביטול

public abstract void cancel()

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

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

public abstract void flush()

מבצע Flush לכתיבות בהמתנה. אין להפעיל את ה-method הזו לפני onStreamReady(). במקרה של write()s שהועברו באיחור, יופעל onWriteCompleted() תואם כשהמאגר יישלח.

isDone

public abstract boolean isDone()

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

החזרות
boolean

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

קריאה

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().

התחלה

public abstract void start()

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

לכתוב

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