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


Leiten Sie diese Klasse von einer Klasse ab, die einen oder mehrere Chunk-Typen verarbeitet.

Zusammenfassung

Konstanten

int CHUNK_HEADER_LEN

int DDMS_CMD

int DDMS_CMD_SET

Felder

public static final int CHUNK_FAIL

public static final ByteOrder CHUNK_ORDER

Öffentliche Konstruktoren

ChunkHandler()

Öffentliche Methoden

static ByteBuffer allocBuffer(int maxChunkLen)

Weisen Sie einen ByteBuffer mit genügend Speicherplatz für den JDWP-Paketheader und einen Chunk-Header zusätzlich zu den Anforderungen des zu erstellenden Chunks zu.

abstract void clientDisconnected(ClientImpl client)

Der Kunde ist weggegangen.

abstract void clientReady(ClientImpl client)

Der Client ist bereit.

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

Schreiben Sie die Chunk-Überschrift am Anfang des Chunks.

static ByteBuffer getChunkDataBuf(ByteBuffer jdwpBuf)

Gibt den Slice des JDWP-Paketpuffers zurück, der nur die Chunk-Daten enthält.

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

Einen eingehenden Chunk verarbeiten.

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

Wandelt einen 4‑Zeichen-String in einen 32‑Bit-Typ um.

Geschützte Methoden

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

Handle-Abschnitte werden von Handlern nicht erkannt.

Konstanten

CHUNK_HEADER_LEN

public static final int CHUNK_HEADER_LEN

Konstanter Wert: 8 (0x00000008)

DDMS_CMD

public static final int DDMS_CMD

Konstanter Wert: 1 (0x00000001)

DDMS_CMD_SET

public static final int DDMS_CMD_SET

Konstanter Wert: 199 (0x000000c7)

Felder

CHUNK_FAIL

public static final int CHUNK_FAIL

CHUNK_ORDER

public static final ByteOrder CHUNK_ORDER

Öffentliche Konstruktoren

ChunkHandler

public ChunkHandler ()

Öffentliche Methoden

allocBuffer

public static ByteBuffer allocBuffer (int maxChunkLen)

Weisen Sie einen ByteBuffer mit genügend Speicherplatz für den JDWP-Paketheader und einen Chunk-Header zusätzlich zu den Anforderungen des zu erstellenden Chunks zu.

„maxChunkLen“ gibt nur die Größe des Blockinhalts an.

Parameter
maxChunkLen int

Returns
ByteBuffer

clientDisconnected

public abstract void clientDisconnected (ClientImpl client)

Der Kunde ist weggegangen. Kann verwendet werden, um alle Ressourcen zu bereinigen, die dieser Clientverbindung zugeordnet sind.

Parameter
client ClientImpl

clientReady

public abstract void clientReady (ClientImpl client)

Der Client ist bereit. Der Monitor-Thread ruft diese Methode für alle Handler auf, wenn der Client als DDM-kompatibel eingestuft wird (in der Regel nach dem Empfang einer HELO-Antwort).

Der Handler kann diese Gelegenheit nutzen, um clientseitige Aktivitäten zu initialisieren. Da es wahrscheinlich ist, dass wir eine Nachricht an den Client senden möchten, kann diese Methode eine IOException auslösen.

Parameter
client ClientImpl

finishChunkPacket

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

Schreiben Sie die Chunk-Überschrift an den Anfang des Chunks.

Übergeben Sie den von JdwpPacket.getPayload() zurückgegebenen Byte-Puffer.

Parameter
packet JdwpPacket

type int

chunkLen int

getChunkDataBuf

public static ByteBuffer getChunkDataBuf (ByteBuffer jdwpBuf)

Gibt den Slice des JDWP-Paketpuffers zurück, der nur die Chunk-Daten enthält.

Parameter
jdwpBuf ByteBuffer

Returns
ByteBuffer

handleChunk

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

Einen eingehenden Chunk verarbeiten. Die Daten vom Chunk-Typ „type“ beginnen am Anfang von „data“ und werden bis data.limit() fortgesetzt.

Wenn „isReply“ festgelegt ist, ist „msgId“ die ID der Anfrage, die wir an den Client gesendet haben. Andernfalls ist es die ID, die vom Client für dieses Ereignis generiert wurde. Es ist möglich, dass wir in Antwortpaketen Chunks erhalten, für die wir nicht registriert sind.

Der Handler darf den Inhalt von „data“ nicht ändern.

Parameter
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int

handlePacket

public void handlePacket (ClientImpl client, 
                JdwpPacket packet)

Parameter
client ClientImpl

packet JdwpPacket

abfangen

public JdwpPacket intercept (JdwpAgent agent, 
                JdwpPacket packet)

Parameter
agent JdwpAgent

packet JdwpPacket

Returns
JdwpPacket

type

public static int type (String typeName)

Wandelt einen 4‑Zeichen-String in einen 32‑Bit-Typ um.

Parameter
typeName String

Returns
int

Geschützte Methoden

handleUnknownChunk

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

Handle-Abschnitte werden von Handlern nicht erkannt. Die handleChunk()-Methode in untergeordneten Klassen sollte diese Methode aufrufen, wenn der Chunk-Typ nicht erkannt wird.

Parameter
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int