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 |