ChunkHandler

public abstract class ChunkHandler
extends JdwpInterceptor

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


Créez une sous-classe avec une classe qui gère un ou plusieurs types de blocs.

Résumé

Constantes

int CHUNK_HEADER_LEN

int DDMS_CMD

int DDMS_CMD_SET

Champs

public static final int CHUNK_FAIL

public static final ByteOrder CHUNK_ORDER

Constructeurs publics

ChunkHandler()

Méthodes publiques

static ByteBuffer allocBuffer(int maxChunkLen)

Allouez un ByteBuffer avec suffisamment d'espace pour contenir l'en-tête de paquet JDWP et un en-tête de bloc en plus des exigences du bloc en cours de création.

abstract void clientDisconnected(ClientImpl client)

Le client a disparu.

abstract void clientReady(ClientImpl client)

Le client est prêt.

static void finishChunkPacket(JdwpPacket packet, int type, int chunkLen)

Écrivez l'en-tête du bloc au début du bloc.

static ByteBuffer getChunkDataBuf(ByteBuffer jdwpBuf)

Renvoie la tranche du tampon de paquets JDWP qui contient uniquement les données du bloc.

abstract void handleChunk(ClientImpl client, int type, ByteBuffer data, boolean isReply, int msgId)

Gérez un bloc entrant.

void handlePacket(ClientImpl client, JdwpPacket packet)
JdwpPacket intercept(JdwpAgent agent, JdwpPacket packet)
static int type(String typeName)

Convertissez une chaîne de quatre caractères en type 32 bits.

Méthodes protégées

void handleUnknownChunk(ClientImpl client, int type, ByteBuffer data, boolean isReply, int msgId)

Blocs d'identifiants non reconnus par les gestionnaires.

Constantes

CHUNK_HEADER_LEN

public static final int CHUNK_HEADER_LEN

Valeur constante : 8 (0x00000008)

DDMS_CMD

public static final int DDMS_CMD

Valeur constante : 1 (0x00000001)

DDMS_CMD_SET

public static final int DDMS_CMD_SET

Valeur constante : 199 (0x000000c7)

Champs

CHUNK_FAIL

public static final int CHUNK_FAIL

CHUNK_ORDER

public static final ByteOrder CHUNK_ORDER

Constructeurs publics

ChunkHandler

public ChunkHandler ()

Méthodes publiques

allocBuffer

public static ByteBuffer allocBuffer (int maxChunkLen)

Allouez un ByteBuffer avec suffisamment d'espace pour contenir l'en-tête de paquet JDWP et un en-tête de bloc en plus des exigences du bloc en cours de création.

"maxChunkLen" indique uniquement la taille du contenu du bloc.

Paramètres
maxChunkLen int

Renvoie
ByteBuffer

clientDisconnected

public abstract void clientDisconnected (ClientImpl client)

Le client a disparu. Peut être utilisé pour nettoyer toutes les ressources associées à cette connexion client.

Paramètres
client ClientImpl

clientReady

public abstract void clientReady (ClientImpl client)

Le client est prêt. Le thread du moniteur appelle cette méthode sur tous les gestionnaires lorsque le client est considéré comme compatible avec DDM (généralement après avoir reçu une réponse HELO).

Le gestionnaire peut profiter de cette occasion pour initialiser l'activité côté client. Étant donné qu'il y a de fortes chances que nous voulions envoyer un message au client, cette méthode peut générer une IOException.

Paramètres
client ClientImpl

finishChunkPacket

public static void finishChunkPacket (JdwpPacket packet, 
                int type, 
                int chunkLen)

Écrivez l'en-tête du bloc au début du bloc.

Transmettez le tampon d'octets renvoyé par JdwpPacket.getPayload().

Paramètres
packet JdwpPacket

type int

chunkLen int

getChunkDataBuf

public static ByteBuffer getChunkDataBuf (ByteBuffer jdwpBuf)

Renvoie la tranche du tampon de paquets JDWP qui contient uniquement les données du bloc.

Paramètres
jdwpBuf ByteBuffer

Renvoie
ByteBuffer

handleChunk

public abstract void handleChunk (ClientImpl client, 
                int type, 
                ByteBuffer data, 
                boolean isReply, 
                int msgId)

Gérez un bloc entrant. Les données, de type "type", commencent au début de "data" et se poursuivent jusqu'à data.limit().

Si "isReply" est défini, "msgId" correspond à l'ID de la requête que nous avons envoyée au client. Sinon, il s'agit de l'ID généré par le client pour cet événement. Notez qu'il est possible de recevoir des blocs dans des paquets de réponse pour lesquels nous ne sommes pas enregistrés.

Le gestionnaire ne peut pas modifier le contenu de "data".

Paramètres
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int

handlePacket

public void handlePacket (ClientImpl client, 
                JdwpPacket packet)

Paramètres
client ClientImpl

packet JdwpPacket

intercepter

public JdwpPacket intercept (JdwpAgent agent, 
                JdwpPacket packet)

Paramètres
agent JdwpAgent

packet JdwpPacket

Renvoie
JdwpPacket

type

public static int type (String typeName)

Convertissez une chaîne de quatre caractères en type 32 bits.

Paramètres
typeName String

Renvoie
int

Méthodes protégées

handleUnknownChunk

protected void handleUnknownChunk (ClientImpl client, 
                int type, 
                ByteBuffer data, 
                boolean isReply, 
                int msgId)

Blocs d'identifiants non reconnus par les gestionnaires. La méthode handleChunk() des sous-classes doit appeler cette méthode si le type de bloc n'est pas reconnu.

Paramètres
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int