JdwpPacket

public final class JdwpPacket
extends Object

java.lang.Object
   ↳ com.android.tradefed.device.server.jdwp.chunkhandler.JdwpPacket


Un pacchetto JDWP, all'inizio di un ByteBuffer.

Ciò consente di racchiudere un "puntatore" ai dati con i risultati della decodifica del pacchetto.

Nessuna delle operazioni qui è sincronizzata. Se più thread accederanno agli stessi ByteBuffers, sarà necessaria la sincronizzazione esterna.

Utilizza il costruttore per creare un pacchetto vuoto o "findPacket()" per racchiudere un JdwpPacket intorno ai dati esistenti.

Riepilogo

Costanti

int JDWP_HEADER_LEN

Costruttori pubblici

JdwpPacket(ByteBuffer buf)

Crea un nuovo pacchetto vuoto in "buf".

Metodi pubblici

void consume()

Utilizza il pacchetto JDWP.

void copy(ByteBuffer into)

Funzione helper per copiare il pacchetto in un nuovo buffer.

static JdwpPacket findPacket(ByteBuffer buf)
static JdwpPacket findPacketHeader(ByteBuffer buf)
void finishPacket(int cmdSet, int cmd, int payloadLength)

Termina un pacchetto creato con newPacket().

int getId()

Restituisce l'ID del pacchetto.

int getLength()

Restituisce la lunghezza di un pacchetto.

static int getPacketLength(ByteBuffer buf)

Quando "buf" contiene JdwpPackets, i primi 4 byte sono la lunghezza del pacchetto.

ByteBuffer getPayload()

Restituisce una sezione del buffer di byte, posizionata dopo l'intestazione JDWP all'inizio dell'intestazione del chunk.

boolean is(int cmdSet, int cmd)
boolean isEmpty()

Restituisce "true" se questo pacchetto JDWP non contiene dati.

boolean isError()

Restituisce "true" se questo pacchetto JDWP è una risposta con un codice di errore diverso da zero.

boolean isReply()

Restituisce "true" se questo pacchetto JDWP è contrassegnato come risposta.

void log(String action)
void move(ByteBuffer buf)

"Sposta" i dati del pacchetto dal buffer in cui ci troviamo a buf nella posizione attuale.

void setPayload(ByteBuffer buf)

Sostituisci il payload del pacchetto con un buffer.

String toString()
void write(SocketChannel chan)

Scrivi il nostro pacchetto a "chan".

Costanti

JDWP_HEADER_LEN

public static final int JDWP_HEADER_LEN

Valore costante: 11 (0x0000000b)

Costruttori pubblici

JdwpPacket

public JdwpPacket (ByteBuffer buf)

Crea un nuovo pacchetto vuoto in "buf".

Parametri
buf ByteBuffer

Metodi pubblici

consumare

public void consume ()

Utilizza il pacchetto JDWP.

All'entrata e all'uscita, "position" si trova alla fine dei dati nel buffer.

copia

public void copy (ByteBuffer into)

Funzione helper per copiare il pacchetto in un nuovo buffer.

Parametri
into ByteBuffer

findPacket

public static JdwpPacket findPacket (ByteBuffer buf)

Parametri
buf ByteBuffer

Ritorni
JdwpPacket

findPacketHeader

public static JdwpPacket findPacketHeader (ByteBuffer buf)

Parametri
buf ByteBuffer

Ritorni
JdwpPacket

finishPacket

public void finishPacket (int cmdSet, 
                int cmd, 
                int payloadLength)

Termina un pacchetto creato con newPacket().

In questo modo viene sempre creato un pacchetto di comandi, con il numero di serie successivo in sequenza.

Dobbiamo considerare "payloadLength" come argomento perché non possiamo vedere la posizione nella "slice" restituita da getPayload(). Potremmo estrarla dall'intestazione del blocco, ma è legale che in un pacchetto JDWP ci sia più di un blocco.

All'uscita, "position" punta alla fine dei dati.

Parametri
cmdSet int

cmd int

payloadLength int

getId

public int getId ()

Restituisce l'ID del pacchetto. Per un pacchetto di risposta, questo ci consente di abbinare la risposta alla richiesta originale.

Ritorni
int

getLength

public int getLength ()

Restituisce la lunghezza di un pacchetto. Ciò include l'intestazione, quindi un pacchetto vuoto è lungo 11 byte.

Ritorni
int

getPacketLength

public static int getPacketLength (ByteBuffer buf)

Quando "buf" contiene JdwpPackets, i primi 4 byte sono la lunghezza del pacchetto. Questa funzione helper legge i primi 4 byte e verifica che la lunghezza sia almeno pari alla dimensione dell'intestazione JDWP.

Parametri
buf ByteBuffer: un buffer che si presume contenga un pacchetto JDWP.

Ritorni
int -1 se la lunghezza non è valida, altrimenti la lunghezza del pacchetto.

getPayload

public ByteBuffer getPayload ()

Restituisce una sezione del buffer di byte, posizionata dopo l'intestazione JDWP all'inizio dell'intestazione del blocco. Il limite del buffer verrà impostato sulla dimensione del payload se la dimensione è nota; se si tratta di un pacchetto in costruzione, il limite verrà impostato alla fine del buffer.

Non esamina affatto il pacchetto, ma funziona su buffer vuoti.

Ritorni
ByteBuffer

is

public boolean is (int cmdSet, 
                int cmd)

Parametri
cmdSet int

cmd int

Ritorni
boolean

isEmpty

public boolean isEmpty ()

Restituisce "true" se questo pacchetto JDWP non contiene dati.

Ritorni
boolean

isError

public boolean isError ()

Restituisce "true" se questo pacchetto JDWP è una risposta con un codice di errore diverso da zero.

Ritorni
boolean

isReply

public boolean isReply ()

Restituisce "true" se questo pacchetto JDWP è contrassegnato come risposta.

Ritorni
boolean

log

public void log (String action)

Parametri
action String

spostare

public void move (ByteBuffer buf)

"Sposta" i dati del pacchetto dal buffer in cui ci troviamo a buf nella posizione corrente.

Parametri
buf ByteBuffer

setPayload

public void setPayload (ByteBuffer buf)

Sostituisci il payload del pacchetto con un buffer. La posizione attuale rimane invariata.

Parametri
buf ByteBuffer

toString

public String toString ()

Ritorni
String

scrivere

public void write (SocketChannel chan)

Scrivi il nostro pacchetto a "chan".

Il pacchetto JDWP inizia all'offset 0 e termina in mBuffer.position().

Parametri
chan SocketChannel