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


Esegui la sottoclasse con una classe che gestisce uno o più tipi di chunk.

Riepilogo

Costanti

int CHUNK_HEADER_LEN

int DDMS_CMD

int DDMS_CMD_SET

Campi

public static final int CHUNK_FAIL

public static final ByteOrder CHUNK_ORDER

Costruttori pubblici

ChunkHandler()

Metodi pubblici

static ByteBuffer allocBuffer(int maxChunkLen)

Alloca un ByteBuffer con spazio sufficiente per contenere l'intestazione del pacchetto JDWP e un'intestazione del blocco oltre alle esigenze del blocco da creare.

abstract void clientDisconnected(ClientImpl client)

Il client è stato chiuso.

abstract void clientReady(ClientImpl client)

Il client è pronto.

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

Scrivi l'intestazione del blocco all'inizio del blocco.

static ByteBuffer getChunkDataBuf(ByteBuffer jdwpBuf)

Restituisce la sezione del buffer dei pacchetti JDWP che contiene solo i dati del blocco.

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

Gestisci un blocco in arrivo.

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

Converte una stringa di 4 caratteri in un tipo a 32 bit.

Metodi protetti

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

Frammenti di handle non riconosciuti dai gestori.

Costanti

CHUNK_HEADER_LEN

public static final int CHUNK_HEADER_LEN

Valore costante: 8 (0x00000008)

DDMS_CMD

public static final int DDMS_CMD

Constant Value: 1 (0x00000001)

DDMS_CMD_SET

public static final int DDMS_CMD_SET

Constant Value: 199 (0x000000c7)

Campi

CHUNK_FAIL

public static final int CHUNK_FAIL

CHUNK_ORDER

public static final ByteOrder CHUNK_ORDER

Costruttori pubblici

ChunkHandler

public ChunkHandler ()

Metodi pubblici

allocBuffer

public static ByteBuffer allocBuffer (int maxChunkLen)

Alloca un ByteBuffer con spazio sufficiente per contenere l'intestazione del pacchetto JDWP e un'intestazione del blocco oltre alle esigenze del blocco da creare.

"maxChunkLen" indica solo le dimensioni dei contenuti del chunk.

Parametri
maxChunkLen int

Ritorni
ByteBuffer

clientDisconnected

public abstract void clientDisconnected (ClientImpl client)

Il client è stato chiuso. Può essere utilizzato per pulire le risorse associate a questa connessione client.

Parametri
client ClientImpl

clientReady

public abstract void clientReady (ClientImpl client)

Il client è pronto. Il thread di monitoraggio chiama questo metodo su tutti i gestori quando il client viene considerato compatibile con DDM (di solito dopo aver ricevuto una risposta HELO).

Il gestore può utilizzare questa opportunità per inizializzare l'attività lato client. Poiché è molto probabile che vogliamo inviare un messaggio al client, questo metodo può generare un'eccezione IOException.

Parametri
client ClientImpl

finishChunkPacket

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

Scrivi l'intestazione del blocco all'inizio del blocco.

Passa il buffer di byte restituito da JdwpPacket.getPayload().

Parametri
packet JdwpPacket

type int

chunkLen int

getChunkDataBuf

public static ByteBuffer getChunkDataBuf (ByteBuffer jdwpBuf)

Restituisce la sezione del buffer dei pacchetti JDWP che contiene solo i dati del blocco.

Parametri
jdwpBuf ByteBuffer

Ritorni
ByteBuffer

handleChunk

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

Gestisci un blocco in arrivo. I dati, di tipo di blocco "type", iniziano all'inizio di "data" e continuano fino a data.limit().

Se "isReply" è impostato, "msgId" sarà l'ID della richiesta che abbiamo inviato al client. In caso contrario, è l'ID generato dal client per questo evento. Tieni presente che è possibile ricevere blocchi nei pacchetti di risposta per i quali non siamo registrati.

Il gestore non può modificare i contenuti di "data".

Parametri
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int

handlePacket

public void handlePacket (ClientImpl client, 
                JdwpPacket packet)

Parametri
client ClientImpl

packet JdwpPacket

intercetta

public JdwpPacket intercept (JdwpAgent agent, 
                JdwpPacket packet)

Parametri
agent JdwpAgent

packet JdwpPacket

Ritorni
JdwpPacket

digita

public static int type (String typeName)

Converte una stringa di 4 caratteri in un tipo a 32 bit.

Parametri
typeName String

Ritorni
int

Metodi protetti

handleUnknownChunk

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

Frammenti di handle non riconosciuti dai gestori. Il metodo handleChunk() nelle sottoclassi deve chiamare questo metodo se il tipo di chunk non viene riconosciuto.

Parametri
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int