JdwpPacket
public
final
class
JdwpPacket
extends Object
| java.lang.Object | |
| ↳ | com.android.tradefed.device.server.jdwp.chunkhandler.JdwpPacket |
Paket JDWP, yang berada di awal ByteBuffer di suatu tempat.
Hal ini memungkinkan kita membungkus "pointer" ke data dengan hasil decoding paket.
Tidak ada operasi di sini yang disinkronkan. Jika beberapa thread akan mengakses ByteBuffer yang sama, sinkronisasi eksternal akan diperlukan.
Gunakan konstruktor untuk membuat paket kosong, atau "findPacket()" untuk membungkus JdwpPacket di sekitar data yang ada.
Ringkasan
Konstanta | |
|---|---|
int |
JDWP_HEADER_LEN
|
Konstruktor publik | |
|---|---|
JdwpPacket(ByteBuffer buf)
Buat paket kosong baru, di "buf". |
|
Metode publik | |
|---|---|
void
|
consume()
Gunakan paket JDWP. |
void
|
copy(ByteBuffer into)
Fungsi bantuan untuk menyalin paket ke dalam buffer baru. |
static
JdwpPacket
|
findPacket(ByteBuffer buf)
|
static
JdwpPacket
|
findPacketHeader(ByteBuffer buf)
|
void
|
finishPacket(int cmdSet, int cmd, int payloadLength)
Selesaikan paket yang dibuat dengan newPacket(). |
int
|
getId()
Menampilkan ID paket. |
int
|
getLength()
Menampilkan panjang paket. |
static
int
|
getPacketLength(ByteBuffer buf)
Jika "buf" berisi JdwpPacket, 4 byte pertama adalah panjang paket. |
ByteBuffer
|
getPayload()
Menampilkan slice buffer byte, yang diposisikan setelah header JDWP ke awal header chunk. |
boolean
|
is(int cmdSet, int cmd)
|
boolean
|
isEmpty()
Menampilkan "true" jika paket JDWP ini tidak memiliki data. |
boolean
|
isError()
Menampilkan "true" jika paket JDWP ini adalah respons dengan kode error bukan nol. |
boolean
|
isReply()
Menampilkan "true" jika paket JDWP ini diberi tag sebagai balasan. |
void
|
log(String action)
|
void
|
move(ByteBuffer buf)
"Pindahkan" data paket dari buffer yang kita gunakan ke buf di posisi saat ini. |
void
|
setPayload(ByteBuffer buf)
Ganti payload paket dengan buffer. |
String
|
toString()
|
void
|
write(SocketChannel chan)
Tulis paket kami ke "chan". |
Konstanta
JDWP_HEADER_LEN
public static final int JDWP_HEADER_LEN
Nilai Konstanta: 11 (0x0000000b)
Konstruktor publik
JdwpPacket
public JdwpPacket (ByteBuffer buf)
Buat paket kosong baru, di "buf".
| Parameter | |
|---|---|
buf |
ByteBuffer |
Metode publik
pakai
public void consume ()
Gunakan paket JDWP.
Saat masuk dan keluar, "posisi" berada di akhir data dalam buffer.
salin
public void copy (ByteBuffer into)
Fungsi bantuan untuk menyalin paket ke dalam buffer baru.
| Parameter | |
|---|---|
into |
ByteBuffer |
findPacket
public static JdwpPacket findPacket (ByteBuffer buf)
| Parameter | |
|---|---|
buf |
ByteBuffer |
| Hasil | |
|---|---|
JdwpPacket |
|
findPacketHeader
public static JdwpPacket findPacketHeader (ByteBuffer buf)
| Parameter | |
|---|---|
buf |
ByteBuffer |
| Hasil | |
|---|---|
JdwpPacket |
|
finishPacket
public void finishPacket (int cmdSet,
int cmd,
int payloadLength)Selesaikan paket yang dibuat dengan newPacket().
Perintah ini selalu membuat paket perintah, dengan nomor seri berikutnya secara berurutan.
Kita harus menggunakan "payloadLength" sebagai argumen karena kita tidak dapat melihat posisi dalam "slice" yang ditampilkan oleh getPayload(). Kita dapat mengambilnya dari header chunk, tetapi boleh saja ada lebih dari satu chunk dalam paket JDWP.
Saat keluar, "position" mengarah ke akhir data.
| Parameter | |
|---|---|
cmdSet |
int |
cmd |
int |
payloadLength |
int |
getId
public int getId ()
Menampilkan ID paket. Untuk paket respons, hal ini memungkinkan kita mencocokkan respons dengan permintaan asli.
| Hasil | |
|---|---|
int |
|
getLength
public int getLength ()
Menampilkan panjang paket. Ini mencakup header, sehingga paket kosong berukuran 11 byte.
| Hasil | |
|---|---|
int |
|
getPacketLength
public static int getPacketLength (ByteBuffer buf)
Jika "buf" berisi JdwpPacket, 4 byte pertama adalah panjang paket. Fungsi bantuan ini membaca 4 byte pertama dan memvalidasi bahwa panjangnya setidaknya sebesar ukuran header JDWP.
| Parameter | |
|---|---|
buf |
ByteBuffer: buffer yang diasumsikan berisi paket jdwp. |
| Hasil | |
|---|---|
int |
-1 jika panjang tidak valid, atau panjang paket. |
getPayload
public ByteBuffer getPayload ()
Menampilkan slice buffer byte, yang diposisikan setelah header JDWP ke awal header chunk. Batas buffer akan ditetapkan ke ukuran payload jika ukurannya diketahui; jika ini adalah paket yang sedang dibuat, batas akan ditetapkan ke akhir buffer.
Tidak memeriksa paket sama sekali -- berfungsi pada buffer kosong.
| Hasil | |
|---|---|
ByteBuffer |
|
is
public boolean is (int cmdSet,
int cmd)| Parameter | |
|---|---|
cmdSet |
int |
cmd |
int |
| Hasil | |
|---|---|
boolean |
|
isEmpty
public boolean isEmpty ()
Menampilkan "true" jika paket JDWP ini tidak memiliki data.
| Hasil | |
|---|---|
boolean |
|
isError
public boolean isError ()
Menampilkan "true" jika paket JDWP ini adalah balasan dengan kode error bukan nol.
| Hasil | |
|---|---|
boolean |
|
isReply
public boolean isReply ()
Menampilkan "true" jika paket JDWP ini ditandai sebagai balasan.
| Hasil | |
|---|---|
boolean |
|
log
public void log (String action)
| Parameter | |
|---|---|
action |
String |
pindahkan
public void move (ByteBuffer buf)
"Pindahkan" data paket dari buffer yang kita gunakan ke buf di posisi saat ini.
| Parameter | |
|---|---|
buf |
ByteBuffer |
setPayload
public void setPayload (ByteBuffer buf)
Ganti payload paket dengan buffer. Posisi saat ini tidak berubah.
| Parameter | |
|---|---|
buf |
ByteBuffer |
toString
public String toString ()
| Hasil | |
|---|---|
String |
|
menulis
public void write (SocketChannel chan)
Tulis paket kami ke "chan".
Paket JDWP dimulai pada offset 0 dan berakhir pada mBuffer.position().
| Parameter | |
|---|---|
chan |
SocketChannel |