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


Buat subclass ini dengan class yang menangani satu atau beberapa jenis chunk.

Ringkasan

Konstanta

int CHUNK_HEADER_LEN

int DDMS_CMD

int DDMS_CMD_SET

Kolom

public static final int CHUNK_FAIL

public static final ByteOrder CHUNK_ORDER

Konstruktor publik

ChunkHandler()

Metode publik

static ByteBuffer allocBuffer(int maxChunkLen)

Alokasikan ByteBuffer dengan ruang yang cukup untuk menyimpan header paket JDWP dan satu header chunk selain permintaan chunk yang dibuat.

abstract void clientDisconnected(ClientImpl client)

Klien telah keluar.

abstract void clientReady(ClientImpl client)

Klien sudah siap.

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

Tulis header potongan di awal potongan.

static ByteBuffer getChunkDataBuf(ByteBuffer jdwpBuf)

Menampilkan slice buffer paket JDWP yang hanya menyimpan data potongan.

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

Menangani chunk yang masuk.

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

Mengonversi string 4 karakter menjadi jenis 32-bit.

Metode yang dilindungi

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

Chunk handle tidak dikenali oleh handler.

Konstanta

CHUNK_HEADER_LEN

public static final int CHUNK_HEADER_LEN

Nilai Konstanta: 8 (0x00000008)

DDMS_CMD

public static final int DDMS_CMD

Nilai Konstanta: 1 (0x00000001)

DDMS_CMD_SET

public static final int DDMS_CMD_SET

Nilai Konstanta: 199 (0x000000c7)

Kolom

CHUNK_FAIL

public static final int CHUNK_FAIL

CHUNK_ORDER

public static final ByteOrder CHUNK_ORDER

Konstruktor publik

ChunkHandler

public ChunkHandler ()

Metode publik

allocBuffer

public static ByteBuffer allocBuffer (int maxChunkLen)

Alokasikan ByteBuffer dengan ruang yang cukup untuk menyimpan header paket JDWP dan satu header chunk selain permintaan chunk yang dibuat.

"maxChunkLen" hanya menunjukkan ukuran konten chunk.

Parameter
maxChunkLen int

Hasil
ByteBuffer

clientDisconnected

public abstract void clientDisconnected (ClientImpl client)

Klien telah keluar. Dapat digunakan untuk membersihkan semua resource yang terkait dengan koneksi klien ini.

Parameter
client ClientImpl

clientReady

public abstract void clientReady (ClientImpl client)

Klien sudah siap. Thread monitor memanggil metode ini pada semua handler saat klien ditentukan sebagai kompatibel dengan DDM (biasanya setelah menerima respons HELO).

Handler dapat menggunakan kesempatan ini untuk melakukan inisialisasi aktivitas sisi klien. Karena ada peluang yang cukup besar bahwa kita akan ingin mengirim pesan kepada klien, metode ini dapat memunculkan IOException.

Parameter
client ClientImpl

finishChunkPacket

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

Tulis header potongan di awal potongan.

Teruskan buffer byte yang ditampilkan oleh JdwpPacket.getPayload().

Parameter
packet JdwpPacket

type int

chunkLen int

getChunkDataBuf

public static ByteBuffer getChunkDataBuf (ByteBuffer jdwpBuf)

Menampilkan slice buffer paket JDWP yang hanya menyimpan data potongan.

Parameter
jdwpBuf ByteBuffer

Hasil
ByteBuffer

handleChunk

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

Menangani chunk yang masuk. Data, dari jenis chunk "type", dimulai di awal "data" dan berlanjut ke data.limit().

Jika "isReply" disetel, "msgId" akan menjadi ID permintaan yang kami kirim ke klien. Jika tidak, ID ini adalah ID yang dihasilkan oleh klien untuk peristiwa ini. Perhatikan bahwa kami mungkin menerima potongan dalam paket balasan yang tidak kami daftarkan.

Handler tidak boleh mengubah konten "data".

Parameter
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int

handlePacket

public void handlePacket (ClientImpl client, 
                JdwpPacket packet)

Parameter
client ClientImpl

packet JdwpPacket

mencegat

public JdwpPacket intercept (JdwpAgent agent, 
                JdwpPacket packet)

Parameter
agent JdwpAgent

packet JdwpPacket

Hasil
JdwpPacket

type

public static int type (String typeName)

Mengonversi string 4 karakter menjadi jenis 32-bit.

Parameter
typeName String

Hasil
int

Metode yang dilindungi

handleUnknownChunk

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

Chunk handle tidak dikenali oleh handler. Metode handleChunk() di sub-class harus memanggil metode ini jika jenis chunk tidak dikenali.

Parameter
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int