JdwpPacket
public
final
class
JdwpPacket
extends Object
| java.lang.Object | |
| ↳ | com.android.tradefed.device.server.jdwp.chunkhandler.JdwpPacket |
Pakiet JDWP znajdujący się na początku obiektu ByteBuffer.
Dzięki temu możemy opakować „wskaźnik” do danych wynikami dekodowania pakietu.
Żadna z tych operacji nie jest zsynchronizowana. Jeśli do tych samych obiektów ByteBuffer będzie uzyskiwać dostęp wiele wątków, wymagana będzie synchronizacja zewnętrzna.
Użyj konstruktora, aby utworzyć pusty pakiet, lub funkcji „findPacket()”, aby opakować istniejące dane w pakiet JdwpPacket.
Podsumowanie
Stałe | |
|---|---|
int |
JDWP_HEADER_LEN
|
Publiczne konstruktory | |
|---|---|
JdwpPacket(ByteBuffer buf)
Utwórz nowy, pusty pakiet w „buf”. |
|
Metody publiczne | |
|---|---|
void
|
consume()
Przetwórz pakiet JDWP. |
void
|
copy(ByteBuffer into)
Funkcja pomocnicza do kopiowania pakietu do nowego bufora. |
static
JdwpPacket
|
findPacket(ByteBuffer buf)
|
static
JdwpPacket
|
findPacketHeader(ByteBuffer buf)
|
void
|
finishPacket(int cmdSet, int cmd, int payloadLength)
Zakończ pakiet utworzony za pomocą funkcji newPacket(). |
int
|
getId()
Zwraca identyfikator pakietu. |
int
|
getLength()
Zwraca długość pakietu. |
static
int
|
getPacketLength(ByteBuffer buf)
Gdy „buf” zawiera JdwpPackets, pierwsze 4 bajty to długość pakietu. |
ByteBuffer
|
getPayload()
Zwróć wycinek bufora bajtów, który zaczyna się za nagłówkiem JDWP i kończy na początku nagłówka fragmentu. |
boolean
|
is(int cmdSet, int cmd)
|
boolean
|
isEmpty()
Zwraca wartość „true”, jeśli ten pakiet JDWP nie zawiera danych. |
boolean
|
isError()
Zwraca wartość „true”, jeśli ten pakiet JDWP jest odpowiedzią z niezerowym kodem błędu. |
boolean
|
isReply()
Zwraca wartość „true”, jeśli ten pakiet JDWP jest oznaczony jako odpowiedź. |
void
|
log(String action)
|
void
|
move(ByteBuffer buf)
„Przenieś” dane pakietowe z bufora, w którym się znajdujemy, do bufora w bieżącej pozycji. |
void
|
setPayload(ByteBuffer buf)
Zastąp ładunek pakietu buforem. |
String
|
toString()
|
void
|
write(SocketChannel chan)
Wyślij nasz pakiet do „chan”. |
Stałe
JDWP_HEADER_LEN
public static final int JDWP_HEADER_LEN
Constant Value: 11 (0x0000000b)
Publiczne konstruktory
JdwpPacket
public JdwpPacket (ByteBuffer buf)
Utwórz nowy, pusty pakiet w „buf”.
| Parametry | |
|---|---|
buf |
ByteBuffer |
Metody publiczne
konsumować,
public void consume ()
Przetwórz pakiet JDWP.
Przy wejściu i wyjściu „pozycja” znajduje się na końcu danych w buforze.
kopia
public void copy (ByteBuffer into)
Funkcja pomocnicza do kopiowania pakietu do nowego bufora.
| Parametry | |
|---|---|
into |
ByteBuffer |
findPacket
public static JdwpPacket findPacket (ByteBuffer buf)
| Parametry | |
|---|---|
buf |
ByteBuffer |
| Zwroty | |
|---|---|
JdwpPacket |
|
findPacketHeader
public static JdwpPacket findPacketHeader (ByteBuffer buf)
| Parametry | |
|---|---|
buf |
ByteBuffer |
| Zwroty | |
|---|---|
JdwpPacket |
|
finishPacket
public void finishPacket (int cmdSet,
int cmd,
int payloadLength)Zakończ pakiet utworzony za pomocą funkcji newPacket().
Zawsze tworzy pakiet poleceń z kolejnym numerem seryjnym.
Musimy użyć argumentu „payloadLength”, ponieważ nie widzimy pozycji w „slice” zwracanym przez getPayload(). Możemy ją wyodrębnić z nagłówka fragmentu, ale w pakiecie JDWP może być więcej niż jeden fragment.
Po zakończeniu działania „pozycja” wskazuje koniec danych.
| Parametry | |
|---|---|
cmdSet |
int |
cmd |
int |
payloadLength |
int |
getId
public int getId ()
Zwraca identyfikator pakietu. W przypadku pakietu odpowiedzi umożliwia to dopasowanie odpowiedzi do pierwotnego żądania.
| Zwroty | |
|---|---|
int |
|
getLength
public int getLength ()
Zwraca długość pakietu. Obejmuje to nagłówek, więc pusty pakiet ma długość 11 bajtów.
| Zwroty | |
|---|---|
int |
|
getPacketLength
public static int getPacketLength (ByteBuffer buf)
Jeśli „buf” zawiera JdwpPackets, pierwsze 4 bajty to długość pakietu. Ta funkcja pomocnicza odczytuje pierwsze 4 bajty i sprawdza, czy długość jest co najmniej równa rozmiarowi nagłówka JDWP.
| Parametry | |
|---|---|
buf |
ByteBuffer: bufor, który prawdopodobnie zawiera pakiet JDWP. |
| Zwroty | |
|---|---|
int |
-1, jeśli długość jest nieprawidłowa, w przeciwnym razie długość pakietu. |
getPayload
public ByteBuffer getPayload ()
Zwraca wycinek bufora bajtów, który zaczyna się za nagłówkiem JDWP i kończy na początku nagłówka fragmentu. Limit bufora zostanie ustawiony na rozmiar ładunku, jeśli jest on znany. Jeśli jest to pakiet w trakcie tworzenia, limit zostanie ustawiony na koniec bufora.
Nie sprawdza pakietu w ogóle – działa na pustych buforach.
| Zwroty | |
|---|---|
ByteBuffer |
|
is
public boolean is (int cmdSet,
int cmd)| Parametry | |
|---|---|
cmdSet |
int |
cmd |
int |
| Zwroty | |
|---|---|
boolean |
|
isEmpty
public boolean isEmpty ()
Zwraca wartość „true”, jeśli ten pakiet JDWP nie zawiera danych.
| Zwroty | |
|---|---|
boolean |
|
isError
public boolean isError ()
Zwraca wartość „true”, jeśli ten pakiet JDWP jest odpowiedzią z niezerowym kodem błędu.
| Zwroty | |
|---|---|
boolean |
|
isReply
public boolean isReply ()
Zwraca wartość „true”, jeśli ten pakiet JDWP jest oznaczony jako odpowiedź.
| Zwroty | |
|---|---|
boolean |
|
log
public void log (String action)
| Parametry | |
|---|---|
action |
String |
przekazywanie
public void move (ByteBuffer buf)
„Przenieś” dane pakietowe z bufora, w którym się znajdujemy, do bufora w bieżącej pozycji.
| Parametry | |
|---|---|
buf |
ByteBuffer |
setPayload
public void setPayload (ByteBuffer buf)
Zastąp ładunek pakietu buforem. Obecna pozycja pozostanie bez zmian.
| Parametry | |
|---|---|
buf |
ByteBuffer |
toString
public String toString ()
| Zwroty | |
|---|---|
String |
|
pisać
public void write (SocketChannel chan)
Wyślij nasz pakiet do „chan”.
Pakiet JDWP zaczyna się od przesunięcia 0 i kończy na pozycji mBuffer.position().
| Parametry | |
|---|---|
chan |
SocketChannel |