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


Crea una subclase con una clase que controle uno o más tipos de fragmentos.

Resumen

Constantes

int CHUNK_HEADER_LEN

int DDMS_CMD

int DDMS_CMD_SET

Campos

public static final int CHUNK_FAIL

public static final ByteOrder CHUNK_ORDER

Constructores públicos

ChunkHandler()

Métodos públicos

static ByteBuffer allocBuffer(int maxChunkLen)

Asigna un ByteBuffer con espacio suficiente para contener el encabezado del paquete JDWP y un encabezado de fragmento, además de las demandas del fragmento que se está creando.

abstract void clientDisconnected(ClientImpl client)

El cliente se fue.

abstract void clientReady(ClientImpl client)

El cliente está listo.

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

Escribe el encabezado del fragmento al comienzo del fragmento.

static ByteBuffer getChunkDataBuf(ByteBuffer jdwpBuf)

Devuelve el segmento del búfer de paquetes JDWP que contiene solo los datos del fragmento.

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

Controla un fragmento entrante.

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

Convierte una cadena de 4 caracteres en un tipo de 32 bits.

Métodos protegidos

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

Los controladores no reconocen los fragmentos de identificador.

Constantes

CHUNK_HEADER_LEN

public static final int CHUNK_HEADER_LEN

Valor constante: 8 (0x00000008)

DDMS_CMD

public static final int DDMS_CMD

Valor constante: 1 (0x00000001)

DDMS_CMD_SET

public static final int DDMS_CMD_SET

Valor constante: 199 (0x000000c7)

Campos

CHUNK_FAIL

public static final int CHUNK_FAIL

CHUNK_ORDER

public static final ByteOrder CHUNK_ORDER

Constructores públicos

ChunkHandler

public ChunkHandler ()

Métodos públicos

allocBuffer

public static ByteBuffer allocBuffer (int maxChunkLen)

Asigna un ByteBuffer con espacio suficiente para contener el encabezado del paquete JDWP y un encabezado de fragmento, además de las demandas del fragmento que se está creando.

"maxChunkLen" indica el tamaño del contenido del fragmento únicamente.

Parámetros
maxChunkLen int

Muestra
ByteBuffer

clientDisconnected

public abstract void clientDisconnected (ClientImpl client)

El cliente se fue. Se puede usar para limpiar los recursos asociados con esta conexión del cliente.

Parámetros
client ClientImpl

clientReady

public abstract void clientReady (ClientImpl client)

El cliente está listo. El subproceso de supervisión llama a este método en todos los controladores cuando se determina que el cliente es compatible con DDM (por lo general, después de recibir una respuesta HELO).

El controlador puede aprovechar esta oportunidad para inicializar la actividad del cliente. Dado que es probable que queramos enviar un mensaje al cliente, este método puede arrojar una IOException.

Parámetros
client ClientImpl

finishChunkPacket

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

Escribe el encabezado del fragmento al comienzo del fragmento.

Pasa el búfer de bytes que devuelve JdwpPacket.getPayload().

Parámetros
packet JdwpPacket

type int

chunkLen int

getChunkDataBuf

public static ByteBuffer getChunkDataBuf (ByteBuffer jdwpBuf)

Devuelve el segmento del búfer de paquetes JDWP que contiene solo los datos del fragmento.

Parámetros
jdwpBuf ByteBuffer

Muestra
ByteBuffer

handleChunk

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

Controla un fragmento entrante. Los datos, del tipo de fragmento "type", comienzan al inicio de "data" y continúan hasta data.limit().

Si se configura "isReply", "msgId" será el ID de la solicitud que enviamos al cliente. De lo contrario, es el ID que generó el cliente para este evento. Ten en cuenta que es posible recibir fragmentos en paquetes de respuesta para los que no estamos registrados.

El controlador no puede modificar el contenido de "data".

Parámetros
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int

handlePacket

public void handlePacket (ClientImpl client, 
                JdwpPacket packet)

Parámetros
client ClientImpl

packet JdwpPacket

interceptar

public JdwpPacket intercept (JdwpAgent agent, 
                JdwpPacket packet)

Parámetros
agent JdwpAgent

packet JdwpPacket

Muestra
JdwpPacket

tipo

public static int type (String typeName)

Convierte una cadena de 4 caracteres en un tipo de 32 bits.

Parámetros
typeName String

Muestra
int

Métodos protegidos

handleUnknownChunk

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

Los controladores no reconocen los fragmentos de identificador. El método handleChunk() en las subclases debe llamar a este método si no se reconoce el tipo de fragmento.

Parámetros
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int