JdwpPacket
public
final
class
JdwpPacket
extends Object
| java.lang.Object | |
| ↳ | com.android.tradefed.device.server.jdwp.chunkhandler.JdwpPacket |
Paquete JDWP, ubicado al comienzo de un ByteBuffer en algún lugar.
Esto nos permite encapsular un "puntero" a los datos con los resultados de la decodificación del paquete.
Ninguna de las operaciones aquí está sincronizada. Si varios subprocesos accederán a los mismos ByteBuffers, se requerirá una sincronización externa.
Usa el constructor para crear un paquete vacío o "findPacket()" para encapsular un JdwpPacket alrededor de datos existentes.
Resumen
Constantes | |
|---|---|
int |
JDWP_HEADER_LEN
|
Constructores públicos | |
|---|---|
JdwpPacket(ByteBuffer buf)
Crea un paquete nuevo y vacío en "buf". |
|
Métodos públicos | |
|---|---|
void
|
consume()
Consume el paquete JDWP. |
void
|
copy(ByteBuffer into)
Función auxiliar para copiar el paquete en un búfer nuevo. |
static
JdwpPacket
|
findPacket(ByteBuffer buf)
|
static
JdwpPacket
|
findPacketHeader(ByteBuffer buf)
|
void
|
finishPacket(int cmdSet, int cmd, int payloadLength)
Finaliza un paquete creado con newPacket(). |
int
|
getId()
Devuelve el ID del paquete. |
int
|
getLength()
Devuelve la longitud de un paquete. |
static
int
|
getPacketLength(ByteBuffer buf)
Cuando "buf" contiene JdwpPackets, los primeros 4 bytes son la longitud del paquete. |
ByteBuffer
|
getPayload()
Devuelve un segmento del búfer de bytes, ubicado después del encabezado de JDWP y hasta el inicio del encabezado del fragmento. |
boolean
|
is(int cmdSet, int cmd)
|
boolean
|
isEmpty()
Devuelve "true" si este paquete JDWP no tiene datos. |
boolean
|
isError()
Devuelve "true" si este paquete JDWP es una respuesta con un código de error distinto de cero. |
boolean
|
isReply()
Devuelve "true" si este paquete JDWP está etiquetado como respuesta. |
void
|
log(String action)
|
void
|
move(ByteBuffer buf)
"Mueve" los datos del paquete del búfer en el que estamos y colócalos en buf en la posición actual. |
void
|
setPayload(ByteBuffer buf)
Reemplaza la carga útil del paquete por un búfer. |
String
|
toString()
|
void
|
write(SocketChannel chan)
Escribe nuestro paquete en "chan". |
Constantes
JDWP_HEADER_LEN
public static final int JDWP_HEADER_LEN
Valor constante: 11 (0x0000000b)
Constructores públicos
JdwpPacket
public JdwpPacket (ByteBuffer buf)
Crea un paquete nuevo y vacío en "buf".
| Parámetros | |
|---|---|
buf |
ByteBuffer |
Métodos públicos
consume
public void consume ()
Consume el paquete JDWP.
Al entrar y salir, la "posición" se encuentra al final de los datos en el búfer.
texto
public void copy (ByteBuffer into)
Función auxiliar para copiar el paquete en un búfer nuevo.
| Parámetros | |
|---|---|
into |
ByteBuffer |
findPacket
public static JdwpPacket findPacket (ByteBuffer buf)
| Parámetros | |
|---|---|
buf |
ByteBuffer |
| Muestra | |
|---|---|
JdwpPacket |
|
findPacketHeader
public static JdwpPacket findPacketHeader (ByteBuffer buf)
| Parámetros | |
|---|---|
buf |
ByteBuffer |
| Muestra | |
|---|---|
JdwpPacket |
|
finishPacket
public void finishPacket (int cmdSet,
int cmd,
int payloadLength)Finaliza un paquete creado con newPacket().
Esto siempre crea un paquete de comandos, con el siguiente número de serie en secuencia.
Tenemos que tomar "payloadLength" como argumento porque no podemos ver la posición en el "slice" que devuelve getPayload(). Podríamos extraerlo del encabezado del fragmento, pero es legal que haya más de un fragmento en un paquete JDWP.
Al salir, "position" apunta al final de los datos.
| Parámetros | |
|---|---|
cmdSet |
int |
cmd |
int |
payloadLength |
int |
getId
public int getId ()
Devuelve el ID del paquete. En el caso de un paquete de respuesta, esto nos permite hacer coincidir la respuesta con la solicitud original.
| Muestra | |
|---|---|
int |
|
getLength
public int getLength ()
Devuelve la longitud de un paquete. Esto incluye el encabezado, por lo que un paquete vacío tiene 11 bytes de longitud.
| Muestra | |
|---|---|
int |
|
getPacketLength
public static int getPacketLength (ByteBuffer buf)
Cuando "buf" contiene JdwpPackets, los primeros 4 bytes son la longitud del paquete. Esta función auxiliar lee los primeros 4 bytes y valida que la longitud sea al menos el tamaño del encabezado de JDWP.
| Parámetros | |
|---|---|
buf |
ByteBuffer: Es un búfer que se supone que contiene un paquete JDWP. |
| Muestra | |
|---|---|
int |
Devuelve -1 si la longitud no es válida; de lo contrario, devuelve la longitud del paquete. |
getPayload
public ByteBuffer getPayload ()
Devuelve un segmento del búfer de bytes, ubicado después del encabezado de JDWP y hasta el inicio del encabezado del fragmento. El límite del búfer se establecerá en el tamaño de la carga útil si se conoce el tamaño. Si se trata de un paquete en construcción, el límite se establecerá en el final del búfer.
No examina el paquete en absoluto; funciona en búferes vacíos.
| Muestra | |
|---|---|
ByteBuffer |
|
is
public boolean is (int cmdSet,
int cmd)| Parámetros | |
|---|---|
cmdSet |
int |
cmd |
int |
| Muestra | |
|---|---|
boolean |
|
isEmpty
public boolean isEmpty ()
Devuelve "true" si este paquete JDWP no tiene datos.
| Muestra | |
|---|---|
boolean |
|
isError
public boolean isError ()
Devuelve "true" si este paquete JDWP es una respuesta con un código de error distinto de cero.
| Muestra | |
|---|---|
boolean |
|
isReply
public boolean isReply ()
Devuelve "true" si este paquete JDWP está etiquetado como respuesta.
| Muestra | |
|---|---|
boolean |
|
log
public void log (String action)
| Parámetros | |
|---|---|
action |
String |
transferir
public void move (ByteBuffer buf)
"Mueve" los datos del paquete del búfer en el que estamos y colócalos en buf en la posición actual.
| Parámetros | |
|---|---|
buf |
ByteBuffer |
setPayload
public void setPayload (ByteBuffer buf)
Reemplaza la carga útil del paquete por un búfer. La posición actual no cambió.
| Parámetros | |
|---|---|
buf |
ByteBuffer |
toString
public String toString ()
| Muestra | |
|---|---|
String |
|
a escribir
public void write (SocketChannel chan)
Escribe nuestro paquete en "chan".
El paquete JDWP comienza en el desplazamiento 0 y termina en mBuffer.position().
| Parámetros | |
|---|---|
chan |
SocketChannel |