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