JdwpPacket
public
final
class
JdwpPacket
extends Object
| java.lang.Object | |
| ↳ | com.android.tradefed.device.server.jdwp.chunkhandler.JdwpPacket |
Um pacote JDWP, localizado no início de um ByteBuffer em algum lugar.
Isso nos permite encapsular um "ponteiro" para os dados com os resultados da decodificação do pacote.
Nenhuma das operações aqui está sincronizada. Se várias linhas de execução acessarem os mesmos ByteBuffers, será necessária uma sincronização externa.
Use o construtor para criar um pacote vazio ou "findPacket()" para encapsular um JdwpPacket em torno de dados atuais.
Resumo
Constantes | |
|---|---|
int |
JDWP_HEADER_LEN
|
Construtores públicos | |
|---|---|
JdwpPacket(ByteBuffer buf)
Crie um pacote vazio em "buf". |
|
Métodos públicos | |
|---|---|
void
|
consume()
Consuma o pacote JDWP. |
void
|
copy(ByteBuffer into)
Função auxiliar para copiar o pacote em um novo buffer. |
static
JdwpPacket
|
findPacket(ByteBuffer buf)
|
static
JdwpPacket
|
findPacketHeader(ByteBuffer buf)
|
void
|
finishPacket(int cmdSet, int cmd, int payloadLength)
Conclui um pacote criado com newPacket(). |
int
|
getId()
Retorna o ID do pacote. |
int
|
getLength()
Retorna o comprimento de um pacote. |
static
int
|
getPacketLength(ByteBuffer buf)
Quando o "buf" contém JdwpPackets, os primeiros quatro bytes são o comprimento do pacote. |
ByteBuffer
|
getPayload()
Retorna uma fração do buffer de bytes, posicionada após o cabeçalho JDWP até o início do cabeçalho do bloco. |
boolean
|
is(int cmdSet, int cmd)
|
boolean
|
isEmpty()
Retorna "true" se este pacote JDWP não tiver dados. |
boolean
|
isError()
Retorna "true" se este pacote JDWP for uma resposta com um código de erro diferente de zero. |
boolean
|
isReply()
Retorna "true" se este pacote JDWP estiver marcado como uma resposta. |
void
|
log(String action)
|
void
|
move(ByteBuffer buf)
"Mova" os dados do pacote para fora do buffer em que estamos e para buf na posição atual. |
void
|
setPayload(ByteBuffer buf)
Substitua a carga útil do pacote por um buffer. |
String
|
toString()
|
void
|
write(SocketChannel chan)
Escreva nosso pacote em "chan". |
Constantes
JDWP_HEADER_LEN
public static final int JDWP_HEADER_LEN
Valor da constante: 11 (0x0000000b)
Construtores públicos
JdwpPacket
public JdwpPacket (ByteBuffer buf)
Crie um pacote vazio em "buf".
| Parâmetros | |
|---|---|
buf |
ByteBuffer |
Métodos públicos
consume
public void consume ()
Consuma o pacote JDWP.
Na entrada e na saída, "position" está no final dos dados no buffer.
copiar
public void copy (ByteBuffer into)
Função auxiliar para copiar o pacote em um novo buffer.
| Parâmetros | |
|---|---|
into |
ByteBuffer |
findPacket
public static JdwpPacket findPacket (ByteBuffer buf)
| Parâmetros | |
|---|---|
buf |
ByteBuffer |
| Retorna | |
|---|---|
JdwpPacket |
|
findPacketHeader
public static JdwpPacket findPacketHeader (ByteBuffer buf)
| Parâmetros | |
|---|---|
buf |
ByteBuffer |
| Retorna | |
|---|---|
JdwpPacket |
|
finishPacket
public void finishPacket (int cmdSet,
int cmd,
int payloadLength)Conclui um pacote criado com newPacket().
Isso sempre cria um pacote de comando com o próximo número de série na sequência.
Precisamos usar "payloadLength" como argumento porque não podemos ver a posição na "slice" retornada por getPayload(). Poderíamos extrair isso do cabeçalho do bloco, mas é legal que haja mais de um bloco em um pacote JDWP.
Ao sair, "position" aponta para o final dos dados.
| Parâmetros | |
|---|---|
cmdSet |
int |
cmd |
int |
payloadLength |
int |
getId
public int getId ()
Retorna o ID do pacote. Para um pacote de resposta, isso permite que a resposta seja correspondida à solicitação original.
| Retorna | |
|---|---|
int |
|
getLength
public int getLength ()
Retorna o comprimento de um pacote. Isso inclui o cabeçalho, então um pacote vazio tem 11 bytes de comprimento.
| Retorna | |
|---|---|
int |
|
getPacketLength
public static int getPacketLength (ByteBuffer buf)
Quando o "buf" contém JdwpPackets, os primeiros quatro bytes são o comprimento do pacote. Essa função auxiliar lê os primeiros quatro bytes e valida se o comprimento é pelo menos o tamanho do cabeçalho JDWP.
| Parâmetros | |
|---|---|
buf |
ByteBuffer: um buffer que se supõe conter um pacote jdwp. |
| Retorna | |
|---|---|
int |
-1 se o comprimento for inválido. Caso contrário, o comprimento do pacote. |
getPayload
public ByteBuffer getPayload ()
Retorna uma fração do buffer de bytes, posicionada após o cabeçalho JDWP até o início do cabeçalho do bloco. O limite do buffer será definido como o tamanho do payload se ele for conhecido. Se este for um pacote em construção, o limite será definido como o final do buffer.
Não examina o pacote e funciona em buffers vazios.
| Retorna | |
|---|---|
ByteBuffer |
|
is
public boolean is (int cmdSet,
int cmd)| Parâmetros | |
|---|---|
cmdSet |
int |
cmd |
int |
| Retorna | |
|---|---|
boolean |
|
isEmpty
public boolean isEmpty ()
Retorna "true" se este pacote JDWP não tiver dados.
| Retorna | |
|---|---|
boolean |
|
isError
public boolean isError ()
Retorna "true" se este pacote JDWP for uma resposta com um código de erro diferente de zero.
| Retorna | |
|---|---|
boolean |
|
isReply
public boolean isReply ()
Retorna "true" se este pacote JDWP estiver marcado como uma resposta.
| Retorna | |
|---|---|
boolean |
|
log
public void log (String action)
| Parâmetros | |
|---|---|
action |
String |
mover
public void move (ByteBuffer buf)
"Mova" os dados do pacote para fora do buffer em que estamos e para buf na posição atual.
| Parâmetros | |
|---|---|
buf |
ByteBuffer |
setPayload
public void setPayload (ByteBuffer buf)
Substitua a carga útil do pacote por um buffer. A posição atual não muda.
| Parâmetros | |
|---|---|
buf |
ByteBuffer |
toString
public String toString ()
| Retorna | |
|---|---|
String |
|
escrever
public void write (SocketChannel chan)
Escreva nosso pacote em "chan".
O pacote JDWP começa no deslocamento 0 e termina em mBuffer.position().
| Parâmetros | |
|---|---|
chan |
SocketChannel |