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
|
เครื่องมือสร้างสาธารณะ | |
|---|---|
JdwpPacket(ByteBuffer buf)
สร้างแพ็กเก็ตใหม่ที่ว่างเปล่าใน "buf" |
|
เมธอดสาธารณะ | |
|---|---|
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 4 ไบต์แรกจะเป็นความยาวของแพ็กเก็ต |
ByteBuffer
|
getPayload()
ส่งคืนส่วนของบัฟเฟอร์ไบต์ที่วางตำแหน่งหลังส่วนหัว JDWP ไปยังจุดเริ่มต้นของส่วนหัวของก้อนข้อมูล |
boolean
|
is(int cmdSet, int cmd)
|
boolean
|
isEmpty()
แสดงผล "จริง" หากแพ็กเก็ต JDWP นี้ไม่มีข้อมูล |
boolean
|
isError()
แสดงผล "true" หากแพ็กเก็ต JDWP นี้เป็นการตอบกลับที่มีรหัสข้อผิดพลาดที่ไม่ใช่ 0 |
boolean
|
isReply()
แสดงผล "true" หากแพ็กเก็ต JDWP นี้มีการแท็กเป็นการตอบกลับ |
void
|
log(String action)
|
void
|
move(ByteBuffer buf)
"ย้าย" ข้อมูลแพ็กเก็ตออกจากบัฟเฟอร์ที่เรากำลังใช้และไปยัง buf ที่ตำแหน่งปัจจุบัน |
void
|
setPayload(ByteBuffer buf)
แทนที่เพย์โหลดของแพ็กเกจด้วยบัฟเฟอร์ |
String
|
toString()
|
void
|
write(SocketChannel chan)
เขียนแพ็กเก็ตของเราไปยัง "chan" |
ค่าคงที่
JDWP_HEADER_LEN
public static final int JDWP_HEADER_LEN
ค่าคงที่: 11 (0x0000000b)
เครื่องมือสร้างสาธารณะ
JdwpPacket
public JdwpPacket (ByteBuffer buf)
สร้างแพ็กเก็ตใหม่ที่ว่างเปล่าใน "buf"
| พารามิเตอร์ | |
|---|---|
buf |
ByteBuffer |
เมธอดสาธารณะ
ใช้
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() ส่งคืน เราอาจดึงข้อมูลนี้ออกจากส่วนหัวของ Chunk ได้ แต่ก็เป็นไปได้ที่จะมี Chunk มากกว่า 1 รายการในแพ็กเก็ต JDWP
เมื่อออกจากฟังก์ชัน "position" จะชี้ไปยังจุดสิ้นสุดของข้อมูล
| พารามิเตอร์ | |
|---|---|
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 ไบต์แรกจะเป็นความยาวของแพ็กเก็ต ฟังก์ชันตัวช่วยนี้ จะอ่าน 4 ไบต์แรกและตรวจสอบว่าความยาวมีขนาดอย่างน้อยเท่ากับขนาดของ ส่วนหัว JDWP
| พารามิเตอร์ | |
|---|---|
buf |
ByteBuffer: บัฟเฟอร์ที่ถือว่ามีแพ็กเก็ต JDWP |
| คิกรีเทิร์น | |
|---|---|
int |
-1 หากความยาวไม่ถูกต้อง หรือความยาวของแพ็กเก็ต |
getPayload
public ByteBuffer getPayload ()
ส่งคืนส่วนของบัฟเฟอร์ไบต์ที่วางตำแหน่งหลังส่วนหัว JDWP ไปยังจุดเริ่มต้นของส่วนหัวของก้อนข้อมูล ระบบจะตั้งค่าขีดจำกัดของบัฟเฟอร์เป็นขนาดของเพย์โหลดหากทราบขนาดดังกล่าว หรือหากเป็นแพ็กเก็ตที่อยู่ระหว่างการสร้าง ระบบจะตั้งค่าขีดจำกัดเป็นจุดสิ้นสุดของบัฟเฟอร์
ไม่ตรวจสอบแพ็กเก็ตเลย ใช้ได้กับบัฟเฟอร์ที่ว่างเปล่า
| คิกรีเทิร์น | |
|---|---|
ByteBuffer |
|
is
public boolean is (int cmdSet,
int cmd)| พารามิเตอร์ | |
|---|---|
cmdSet |
int |
cmd |
int |
| คิกรีเทิร์น | |
|---|---|
boolean |
|
isEmpty
public boolean isEmpty ()
แสดงผล "จริง" หากแพ็กเก็ต JDWP นี้ไม่มีข้อมูล
| คิกรีเทิร์น | |
|---|---|
boolean |
|
isError
public boolean isError ()
แสดงผล "true" หากแพ็กเก็ต JDWP นี้เป็นการตอบกลับที่มีรหัสข้อผิดพลาดที่ไม่ใช่ 0
| คิกรีเทิร์น | |
|---|---|
boolean |
|
isReply
public boolean isReply ()
แสดงผล "true" หากแพ็กเก็ต JDWP นี้มีการแท็กเป็นการตอบกลับ
| คิกรีเทิร์น | |
|---|---|
boolean |
|
log
public void log (String action)
| พารามิเตอร์ | |
|---|---|
action |
String |
ย้าย
public void move (ByteBuffer buf)
"ย้าย" ข้อมูลแพ็กเก็ตออกจากบัฟเฟอร์ที่เรากำลังใช้และไปยัง buf ที่ตำแหน่งปัจจุบัน
| พารามิเตอร์ | |
|---|---|
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 |