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 |