JdwpPacket
public
final
class
JdwpPacket
extends Object
| java.lang.Object | |
| ↳ | com.android.tradefed.device.server.jdwp.chunkhandler.JdwpPacket |
Paquet JDWP situé au début d'un ByteBuffer.
Cela nous permet d'encapsuler un "pointeur" vers les données avec les résultats du décodage du paquet.
Aucune des opérations ici n'est synchronisée. Si plusieurs threads accèdent aux mêmes ByteBuffers, une synchronisation externe sera nécessaire.
Utilisez le constructeur pour créer un paquet vide ou "findPacket()" pour encapsuler un JdwpPacket autour des données existantes.
Résumé
Constantes | |
|---|---|
int |
JDWP_HEADER_LEN
|
Constructeurs publics | |
|---|---|
JdwpPacket(ByteBuffer buf)
Créez un paquet vide dans "buf". |
|
Méthodes publiques | |
|---|---|
void
|
consume()
Consommez le paquet JDWP. |
void
|
copy(ByteBuffer into)
Fonction d'assistance permettant de copier le paquet dans un nouveau tampon. |
static
JdwpPacket
|
findPacket(ByteBuffer buf)
|
static
JdwpPacket
|
findPacketHeader(ByteBuffer buf)
|
void
|
finishPacket(int cmdSet, int cmd, int payloadLength)
Termine un paquet créé avec newPacket(). |
int
|
getId()
Renvoie l'ID du paquet. |
int
|
getLength()
Renvoie la longueur d'un paquet. |
static
int
|
getPacketLength(ByteBuffer buf)
Lorsque "buf" contient des JdwpPackets, les quatre premiers octets correspondent à la longueur du paquet. |
ByteBuffer
|
getPayload()
Renvoie une tranche du tampon d'octets, positionnée après l'en-tête JDWP et avant l'en-tête de bloc. |
boolean
|
is(int cmdSet, int cmd)
|
boolean
|
isEmpty()
Renvoie "true" si ce paquet JDWP ne contient aucune donnée. |
boolean
|
isError()
Renvoie "true" si ce paquet JDWP est une réponse avec un code d'erreur non nul. |
boolean
|
isReply()
Renvoie "true" si ce paquet JDWP est marqué comme réponse. |
void
|
log(String action)
|
void
|
move(ByteBuffer buf)
"Déplace" les données de paquets hors du tampon sur lequel nous nous trouvons et dans buf à la position actuelle. |
void
|
setPayload(ByteBuffer buf)
Remplacez la charge utile du package par un tampon. |
String
|
toString()
|
void
|
write(SocketChannel chan)
Écris notre paquet à "chan". |
Constantes
JDWP_HEADER_LEN
public static final int JDWP_HEADER_LEN
Valeur constante : 11 (0x0000000b)
Constructeurs publics
JdwpPacket
public JdwpPacket (ByteBuffer buf)
Créez un paquet vide dans "buf".
| Paramètres | |
|---|---|
buf |
ByteBuffer |
Méthodes publiques
consommer
public void consume ()
Consommez le paquet JDWP.
À l'entrée et à la sortie, la "position" se trouve à la fin des données du tampon.
copier
public void copy (ByteBuffer into)
Fonction d'assistance permettant de copier le paquet dans un nouveau tampon.
| Paramètres | |
|---|---|
into |
ByteBuffer |
findPacket
public static JdwpPacket findPacket (ByteBuffer buf)
| Paramètres | |
|---|---|
buf |
ByteBuffer |
| Renvoie | |
|---|---|
JdwpPacket |
|
findPacketHeader
public static JdwpPacket findPacketHeader (ByteBuffer buf)
| Paramètres | |
|---|---|
buf |
ByteBuffer |
| Renvoie | |
|---|---|
JdwpPacket |
|
finishPacket
public void finishPacket (int cmdSet,
int cmd,
int payloadLength)Termine un paquet créé avec newPacket().
Cette commande crée toujours un paquet de commandes, avec le numéro de série suivant dans la séquence.
Nous devons prendre "payloadLength" comme argument, car nous ne pouvons pas voir la position dans la "tranche" renvoyée par getPayload(). Nous pourrions l'extraire de l'en-tête du bloc, mais il est légal qu'il y ait plus d'un bloc dans un paquet JDWP.
À la sortie, "position" pointe vers la fin des données.
| Paramètres | |
|---|---|
cmdSet |
int |
cmd |
int |
payloadLength |
int |
getId
public int getId ()
Renvoie l'ID du paquet. Pour un paquet de réponse, cela nous permet de faire correspondre la réponse à la requête d'origine.
| Renvoie | |
|---|---|
int |
|
getLength
public int getLength ()
Renvoie la longueur d'un paquet. Cela inclut l'en-tête. Un paquet vide fait donc 11 octets.
| Renvoie | |
|---|---|
int |
|
getPacketLength
public static int getPacketLength (ByteBuffer buf)
Lorsque "buf" contient des JdwpPackets, les quatre premiers octets correspondent à la longueur du paquet. Cette fonction d'assistance lit les quatre premiers octets et vérifie que la longueur est au moins égale à la taille de l'en-tête JDWP.
| Paramètres | |
|---|---|
buf |
ByteBuffer : un tampon censé contenir un paquet JDWP. |
| Renvoie | |
|---|---|
int |
-1 si la longueur n'est pas valide, sinon la longueur du paquet. |
getPayload
public ByteBuffer getPayload ()
Renvoie une tranche du tampon d'octets, positionnée après l'en-tête JDWP et avant l'en-tête de bloc. La limite du tampon sera définie sur la taille de la charge utile si la taille est connue. S'il s'agit d'un paquet en cours de construction, la limite sera définie sur la fin du tampon.
N'examine pas du tout le paquet : fonctionne sur des tampons vides.
| Renvoie | |
|---|---|
ByteBuffer |
|
is
public boolean is (int cmdSet,
int cmd)| Paramètres | |
|---|---|
cmdSet |
int |
cmd |
int |
| Renvoie | |
|---|---|
boolean |
|
isEmpty
public boolean isEmpty ()
Renvoie "true" si ce paquet JDWP ne contient aucune donnée.
| Renvoie | |
|---|---|
boolean |
|
isError
public boolean isError ()
Renvoie "true" si ce paquet JDWP est une réponse avec un code d'erreur non nul.
| Renvoie | |
|---|---|
boolean |
|
isReply
public boolean isReply ()
Renvoie "true" si ce paquet JDWP est marqué comme réponse.
| Renvoie | |
|---|---|
boolean |
|
log
public void log (String action)
| Paramètres | |
|---|---|
action |
String |
déplacer
public void move (ByteBuffer buf)
"Déplace" les données de paquets hors du tampon sur lequel nous nous trouvons et dans buf à la position actuelle.
| Paramètres | |
|---|---|
buf |
ByteBuffer |
setPayload
public void setPayload (ByteBuffer buf)
Remplacez la charge utile du package par un tampon. La position actuelle reste inchangée.
| Paramètres | |
|---|---|
buf |
ByteBuffer |
toString
public String toString ()
| Renvoie | |
|---|---|
String |
|
à écrire
public void write (SocketChannel chan)
Écris notre paquet à "chan".
Le paquet JDWP commence au décalage 0 et se termine à mBuffer.position().
| Paramètres | |
|---|---|
chan |
SocketChannel |