JdwpPacket

public final class JdwpPacket
extends Object

java.lang.Object
   ↳ com.android.tradefed.device.server.jdwp.chunkhandler.JdwpPacket


חבילת JDWP, שנמצאת בתחילת ByteBuffer במקום כלשהו.

כך אנחנו יכולים לעטוף 'מצביע' לנתונים בתוצאות של פענוח המנה.

אף אחת מהפעולות כאן לא מסונכרנת. אם כמה שרשורים יגשו לאותם אובייקטים מסוג ByteBuffer, יהיה צורך בסינכרון חיצוני.

משתמשים בבונה כדי ליצור מנה ריקה, או ב-findPacket() כדי לעטוף JdwpPacket סביב נתונים קיימים.

סיכום

ערכים קבועים

int JDWP_HEADER_LEN

Constructors ציבוריים

JdwpPacket(ByteBuffer buf)

יוצרים מנה חדשה וריקה ב-buf.

‫methods ציבוריים

void consume()

צריכת חבילת ה-JDWP.

void copy(ByteBuffer into)

פונקציית עזר להעתקת המנה למאגר חדש.

static JdwpPacket findPacket(ByteBuffer buf)
static JdwpPacket findPacketHeader(ByteBuffer buf)
void finishPacket(int cmdSet, int cmd, int payloadLength)

סיום של מנה שנוצרה באמצעות newPacket().

int getId()

החזרת מזהה המנה.

int getLength()

החזרת האורך של חבילת נתונים.

static int getPacketLength(ByteBuffer buf)

כשה-buf מכיל JdwpPackets, ארבעת הבייטים הראשונים הם אורך החבילה.

ByteBuffer getPayload()

הפונקציה מחזירה פרוסה של מאגר הבייטים, שממוקמת אחרי כותרת JDWP ועד לתחילת כותרת הנתח.

boolean is(int cmdSet, int cmd)
boolean isEmpty()

הפונקציה מחזירה את הערך true אם לחבילת ה-JDWP הזו אין נתונים.

boolean isError()

הפונקציה מחזירה את הערך true אם מנת הנתונים הזו של JDWP היא תשובה עם קוד שגיאה שאינו אפס.

boolean isReply()

הפונקציה מחזירה את הערך true אם חבילת ה-JDWP הזו מתויגת כתשובה.

void log(String action)
void move(ByteBuffer buf)

‫"Move" the packet data out of the buffer we're sitting on and into buf at the current position.

void setPayload(ByteBuffer buf)

מחליפים את מטען הייעוד של החבילה במאגר.

String toString()
void write(SocketChannel chan)

תכתוב את החבילה שלנו ל-chan.

ערכים קבועים

JDWP_HEADER_LEN

public static final int JDWP_HEADER_LEN

ערך קבוע: 11 (0x0000000b)

Constructors ציבוריים

JdwpPacket

public JdwpPacket (ByteBuffer buf)

יוצרים מנה חדשה וריקה ב-buf.

פרמטרים
buf ByteBuffer

‫methods ציבוריים

לצרוך

public void consume ()

צריכת חבילת ה-JDWP.

בכניסה וביציאה, 'מיקום' נמצא בסוף הנתונים במאגר.

העתק

public void copy (ByteBuffer into)

פונקציית עזר להעתקת המנה למאגר חדש.

פרמטרים
into ByteBuffer

findPacket

public static JdwpPacket findPacket (ByteBuffer buf)

פרמטרים
buf ByteBuffer

החזרות
JdwpPacket

findPacketHeader

public static JdwpPacket findPacketHeader (ByteBuffer buf)

פרמטרים
buf ByteBuffer

החזרות
JdwpPacket

finishPacket

public void finishPacket (int cmdSet, 
                int cmd, 
                int payloadLength)

סיום של מנה שנוצרה באמצעות newPacket().

הפעולה הזו תמיד יוצרת מנה של פקודות, עם המספר הסידורי הבא ברצף.

אנחנו צריכים להשתמש ב-payloadLength כארגומנט כי אנחנו לא יכולים לראות את המיקום ב-slice שמוחזר על ידי getPayload(). אפשר לחלץ אותו מכותרת הנתונים, אבל יכול להיות יותר מנתון אחד בחבילת JDWP.

בסיום, 'מיקום' מצביע על סוף הנתונים.

פרמטרים
cmdSet int

cmd int

payloadLength int

getId

public int getId ()

החזרת מזהה המנה. במקרה של חבילת תשובה, זה מאפשר לנו להתאים את התשובה לבקשה המקורית.

החזרות
int

getLength

public int getLength ()

החזרת האורך של חבילה. האורך הזה כולל את הכותרת, כך שחבילה ריקה היא באורך 11 בייט.

החזרות
int

getPacketLength

public static int getPacketLength (ByteBuffer buf)

כשה-buf מכיל JdwpPackets, ארבעת הבייטים הראשונים הם אורך החבילה. פונקציית העזר הזו קוראת את 4 הבייטים הראשונים ומוודאת שהאורך הוא לפחות הגודל של כותרת JDWP.

פרמטרים
buf ByteBuffer: מאגר זמני שאמור להכיל חבילת jdwp.

החזרות
int ‫‎-1 אם האורך לא תקין, אחרת אורך המנה.

getPayload

public ByteBuffer getPayload ()

הפונקציה מחזירה פרוסה של מאגר הבייטים, שממוקמת אחרי כותרת JDWP ועד לתחילת כותרת הנתח. המגבלה של המאגר תוגדר לגודל של מטען הייעודי (payload) אם הגודל ידוע. אם מדובר במנה (packet) שנמצאת בתהליך בנייה, המגבלה תוגדר לסוף המאגר.

לא בודק את המנה בכלל – פועל על מאגרי נתונים ריקים.

החזרות
ByteBuffer

שווה

public boolean is (int cmdSet, 
                int cmd)

פרמטרים
cmdSet int

cmd int

החזרות
boolean

isEmpty

public boolean isEmpty ()

הפונקציה מחזירה את הערך true אם לחבילת ה-JDWP הזו אין נתונים.

החזרות
boolean

isError

public boolean isError ()

הפונקציה מחזירה את הערך true אם מנת הנתונים הזו של JDWP היא תשובה עם קוד שגיאה שאינו אפס.

החזרות
boolean

isReply

public boolean isReply ()

הפונקציה מחזירה את הערך true אם חבילת ה-JDWP הזו מתויגת כתשובה.

החזרות
boolean

log

public void log (String action)

פרמטרים
action String

העברה

public void move (ByteBuffer buf)

‫"Move" the packet data out of the buffer we're sitting on and into buf at the current position.

פרמטרים
buf ByteBuffer

setPayload

public void setPayload (ByteBuffer buf)

מחליפים את מטען הנתונים של החבילה במאגר. המיקום הנוכחי לא משתנה.

פרמטרים
buf ByteBuffer

toString

public String toString ()

החזרות
String

לכתוב

public void write (SocketChannel chan)

תכתוב את המנה שלנו ל-chan.

חבילת ה-JDWP מתחילה בהיסט 0 ומסתיימת ב-mBuffer.position().

פרמטרים
chan SocketChannel