ChunkHandler

public abstract class ChunkHandler
extends JdwpInterceptor

java.lang.Object
   ↳ com.android.tradefed.device.server.jdwp.JdwpInterceptor
     ↳ com.android.tradefed.device.server.jdwp.chunkhandler.ChunkHandler


Utwórz podklasę z klasą, która obsługuje co najmniej 1 typ fragmentu.

Podsumowanie

Stałe

int CHUNK_HEADER_LEN

int DDMS_CMD

int DDMS_CMD_SET

Fieldsem

public static final int CHUNK_FAIL

public static final ByteOrder CHUNK_ORDER

Publiczne konstruktory

ChunkHandler()

Metody publiczne

static ByteBuffer allocBuffer(int maxChunkLen)

Przydziel ByteBuffer z wystarczającą ilością miejsca na nagłówek pakietu JDWP i nagłówek fragmentu, a także na potrzeby tworzonego fragmentu.

abstract void clientDisconnected(ClientImpl client)

Klient odszedł.

abstract void clientReady(ClientImpl client)

Klient jest gotowy.

static void finishChunkPacket(JdwpPacket packet, int type, int chunkLen)

Napisz nagłówek fragmentu na początku fragmentu.

static ByteBuffer getChunkDataBuf(ByteBuffer jdwpBuf)

Zwraca wycinek bufora pakietu JDWP, który zawiera tylko dane fragmentu.

abstract void handleChunk(ClientImpl client, int type, ByteBuffer data, boolean isReply, int msgId)

Obsługa przychodzącego fragmentu.

void handlePacket(ClientImpl client, JdwpPacket packet)
JdwpPacket intercept(JdwpAgent agent, JdwpPacket packet)
static int type(String typeName)

Konwertuje 4-znakowy ciąg znaków na typ 32-bitowy.

Metody chronione

void handleUnknownChunk(ClientImpl client, int type, ByteBuffer data, boolean isReply, int msgId)

Fragmenty uchwytu nie są rozpoznawane przez moduły obsługi.

Stałe

CHUNK_HEADER_LEN

public static final int CHUNK_HEADER_LEN

Wartość stała: 8 (0x00000008)

DDMS_CMD

public static final int DDMS_CMD

Wartość stała: 1 (0x00000001)

DDMS_CMD_SET

public static final int DDMS_CMD_SET

Wartość stała: 199 (0x000000c7)

Fieldsem

CHUNK_FAIL

public static final int CHUNK_FAIL

CHUNK_ORDER

public static final ByteOrder CHUNK_ORDER

Publiczne konstruktory

ChunkHandler

public ChunkHandler ()

Metody publiczne

allocBuffer

public static ByteBuffer allocBuffer (int maxChunkLen)

Przydziel ByteBuffer z wystarczającą ilością miejsca na nagłówek pakietu JDWP i nagłówek jednego fragmentu, a także na potrzeby tworzonego fragmentu.

„maxChunkLen” wskazuje tylko rozmiar zawartości fragmentu.

Parametry
maxChunkLen int

Zwroty
ByteBuffer

clientDisconnected

public abstract void clientDisconnected (ClientImpl client)

Klient odszedł. Może służyć do czyszczenia zasobów powiązanych z tym połączeniem klienta.

Parametry
client ClientImpl

clientReady

public abstract void clientReady (ClientImpl client)

Klient jest gotowy. Wątek monitora wywołuje tę metodę we wszystkich modułach obsługi, gdy klient jest uznawany za obsługującego DDM (zwykle po otrzymaniu odpowiedzi HELO).

Obsługa może wykorzystać tę okazję do zainicjowania aktywności po stronie klienta. Istnieje duże prawdopodobieństwo, że będziemy chcieli wysłać wiadomość do klienta, dlatego ta metoda może zgłosić wyjątek IOException.

Parametry
client ClientImpl

finishChunkPacket

public static void finishChunkPacket (JdwpPacket packet, 
                int type, 
                int chunkLen)

Napisz nagłówek fragmentu na początku fragmentu.

Przekaż bufor bajtów zwrócony przez JdwpPacket.getPayload().

Parametry
packet JdwpPacket

type int

chunkLen int

getChunkDataBuf

public static ByteBuffer getChunkDataBuf (ByteBuffer jdwpBuf)

Zwraca wycinek bufora pakietu JDWP, który zawiera tylko dane fragmentu.

Parametry
jdwpBuf ByteBuffer

Zwroty
ByteBuffer

handleChunk

public abstract void handleChunk (ClientImpl client, 
                int type, 
                ByteBuffer data, 
                boolean isReply, 
                int msgId)

Obsługa przychodzącego fragmentu. Dane typu fragmentu „type” zaczynają się na początku „data” i trwają do data.limit().

Jeśli parametr „isReply” jest ustawiony, „msgId” będzie identyfikatorem żądania wysłanego przez nas do klienta. W przeciwnym razie jest to identyfikator wygenerowany przez klienta na potrzeby tego zdarzenia. Pamiętaj, że w pakietach odpowiedzi możesz otrzymać fragmenty, w przypadku których nie jesteśmy zarejestrowani.

Procedura obsługi nie może modyfikować zawartości parametru „data”.

Parametry
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int

handlePacket

public void handlePacket (ClientImpl client, 
                JdwpPacket packet)

Parametry
client ClientImpl

packet JdwpPacket

przechwytywać,

public JdwpPacket intercept (JdwpAgent agent, 
                JdwpPacket packet)

Parametry
agent JdwpAgent

packet JdwpPacket

Zwroty
JdwpPacket

typ

public static int type (String typeName)

Konwertuje 4-znakowy ciąg znaków na typ 32-bitowy.

Parametry
typeName String

Zwroty
int

Metody chronione

handleUnknownChunk

protected void handleUnknownChunk (ClientImpl client, 
                int type, 
                ByteBuffer data, 
                boolean isReply, 
                int msgId)

Fragmenty uchwytu nie są rozpoznawane przez moduły obsługi. Metoda handleChunk() w klasach podrzędnych powinna wywoływać tę metodę, jeśli typ fragmentu nie jest rozpoznawany.

Parametry
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int