JdwpPacket
public
final
class
JdwpPacket
extends Object
| java.lang.Object | |
| ↳ | com.android.tradefed.device.server.jdwp.chunkhandler.JdwpPacket |
Một gói JDWP, nằm ở đầu ByteBuffer ở đâu đó.
Điều này cho phép chúng ta bao bọc một "con trỏ" đến dữ liệu bằng kết quả giải mã gói.
Không có thao tác nào ở đây được đồng bộ hoá. Nếu nhiều luồng sẽ truy cập vào cùng một ByteBuffer, thì bạn sẽ cần đồng bộ hoá bên ngoài.
Sử dụng hàm khởi tạo để tạo một gói trống hoặc "findPacket()" để bao bọc một JdwpPacket xung quanh dữ liệu hiện có.
Tóm tắt
Hằng số | |
|---|---|
int |
JDWP_HEADER_LEN
|
Hàm khởi tạo công khai | |
|---|---|
JdwpPacket(ByteBuffer buf)
Tạo một gói trống mới trong "buf". |
|
Phương thức công khai | |
|---|---|
void
|
consume()
Sử dụng gói JDWP. |
void
|
copy(ByteBuffer into)
Hàm trợ giúp để sao chép gói vào một vùng đệm mới. |
static
JdwpPacket
|
findPacket(ByteBuffer buf)
|
static
JdwpPacket
|
findPacketHeader(ByteBuffer buf)
|
void
|
finishPacket(int cmdSet, int cmd, int payloadLength)
Kết thúc một gói được tạo bằng newPacket(). |
int
|
getId()
Trả về mã nhận dạng của gói. |
int
|
getLength()
Trả về độ dài của một gói. |
static
int
|
getPacketLength(ByteBuffer buf)
Khi "buf" chứa JdwpPackets, 4 byte đầu tiên là độ dài của gói. |
ByteBuffer
|
getPayload()
Trả về một lát của bộ đệm byte, được đặt sau tiêu đề JDWP đến đầu tiêu đề của khối. |
boolean
|
is(int cmdSet, int cmd)
|
boolean
|
isEmpty()
Trả về "true" nếu gói JDWP này không có dữ liệu. |
boolean
|
isError()
Trả về "true" nếu gói JDWP này là một phản hồi có mã lỗi khác 0. |
boolean
|
isReply()
Trả về "true" nếu gói JDWP này được gắn thẻ là một câu trả lời. |
void
|
log(String action)
|
void
|
move(ByteBuffer buf)
"Di chuyển" dữ liệu gói ra khỏi vùng đệm mà chúng ta đang sử dụng và vào buf tại vị trí hiện tại. |
void
|
setPayload(ByteBuffer buf)
Thay thế tải trọng của gói bằng một vùng đệm. |
String
|
toString()
|
void
|
write(SocketChannel chan)
Ghi gói của chúng ta vào "chan". |
Hằng số
JDWP_HEADER_LEN
public static final int JDWP_HEADER_LEN
Giá trị hằng số: 11 (0x0000000b)
Hàm khởi tạo công khai
JdwpPacket
public JdwpPacket (ByteBuffer buf)
Tạo một gói trống mới trong "buf".
| Tham số | |
|---|---|
buf |
ByteBuffer |
Phương thức công khai
tiêu thụ
public void consume ()
Sử dụng gói JDWP.
Khi vào và thoát, "vị trí" nằm ở cuối dữ liệu trong vùng đệm.
sao chép
public void copy (ByteBuffer into)
Hàm trợ giúp để sao chép gói vào một vùng đệm mới.
| Tham số | |
|---|---|
into |
ByteBuffer |
findPacket
public static JdwpPacket findPacket (ByteBuffer buf)
| Tham số | |
|---|---|
buf |
ByteBuffer |
| Giá trị trả về | |
|---|---|
JdwpPacket |
|
findPacketHeader
public static JdwpPacket findPacketHeader (ByteBuffer buf)
| Tham số | |
|---|---|
buf |
ByteBuffer |
| Giá trị trả về | |
|---|---|
JdwpPacket |
|
finishPacket
public void finishPacket (int cmdSet,
int cmd,
int payloadLength)Kết thúc một gói được tạo bằng newPacket().
Thao tác này luôn tạo một gói lệnh, với số sê-ri tiếp theo theo trình tự.
Chúng ta phải lấy "payloadLength" làm đối số vì không thể thấy vị trí trong "slice" do getPayload() trả về. Chúng ta có thể lấy thông tin này từ tiêu đề khối, nhưng việc có nhiều khối trong một gói JDWP là hợp lệ.
Khi thoát, "position" sẽ trỏ đến cuối dữ liệu.
| Tham số | |
|---|---|
cmdSet |
int |
cmd |
int |
payloadLength |
int |
getId
public int getId ()
Trả về mã nhận dạng của gói. Đối với một gói phản hồi, điều này cho phép chúng ta so khớp phản hồi với yêu cầu ban đầu.
| Giá trị trả về | |
|---|---|
int |
|
getLength
public int getLength ()
Trả về độ dài của một gói. Điều này bao gồm cả tiêu đề, nên một gói trống có độ dài 11 byte.
| Giá trị trả về | |
|---|---|
int |
|
getPacketLength
public static int getPacketLength (ByteBuffer buf)
Khi "buf" chứa JdwpPackets, 4 byte đầu tiên là độ dài của gói. Hàm trợ giúp này đọc 4 byte đầu tiên và xác thực rằng độ dài ít nhất phải bằng kích thước của tiêu đề JDWP.
| Tham số | |
|---|---|
buf |
ByteBuffer: một vùng đệm được giả định là chứa một gói jdwp. |
| Giá trị trả về | |
|---|---|
int |
-1 nếu độ dài không hợp lệ, nếu không thì độ dài của gói. |
getPayload
public ByteBuffer getPayload ()
Trả về một lát của vùng đệm byte, được đặt sau tiêu đề JDWP đến đầu tiêu đề khối. Giới hạn của vùng đệm sẽ được đặt thành kích thước của tải trọng nếu biết kích thước; nếu đây là một gói đang được tạo, giới hạn sẽ được đặt thành cuối vùng đệm.
Không kiểm tra gói nào cả – hoạt động trên các vùng đệm trống.
| Giá trị trả về | |
|---|---|
ByteBuffer |
|
là
public boolean is (int cmdSet,
int cmd)| Tham số | |
|---|---|
cmdSet |
int |
cmd |
int |
| Giá trị trả về | |
|---|---|
boolean |
|
isEmpty
public boolean isEmpty ()
Trả về "true" nếu gói JDWP này không có dữ liệu.
| Giá trị trả về | |
|---|---|
boolean |
|
isError
public boolean isError ()
Trả về "true" nếu gói JDWP này là một phản hồi có mã lỗi khác 0.
| Giá trị trả về | |
|---|---|
boolean |
|
isReply
public boolean isReply ()
Trả về "true" nếu gói JDWP này được gắn thẻ là một câu trả lời.
| Giá trị trả về | |
|---|---|
boolean |
|
log
public void log (String action)
| Tham số | |
|---|---|
action |
String |
di chuyển
public void move (ByteBuffer buf)
"Di chuyển" dữ liệu gói ra khỏi vùng đệm mà chúng ta đang sử dụng và vào buf tại vị trí hiện tại.
| Tham số | |
|---|---|
buf |
ByteBuffer |
setPayload
public void setPayload (ByteBuffer buf)
Thay thế tải trọng của gói bằng một vùng đệm. Vị trí hiện tại không thay đổi.
| Tham số | |
|---|---|
buf |
ByteBuffer |
toString
public String toString ()
| Giá trị trả về | |
|---|---|
String |
|
viết
public void write (SocketChannel chan)
Ghi gói của chúng ta vào "chan".
Gói JDWP bắt đầu ở độ lệch 0 và kết thúc ở mBuffer.position().
| Tham số | |
|---|---|
chan |
SocketChannel |