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 |