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 |