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


1 つ以上のチャンクタイプを処理するクラスでこれをサブクラス化します。

概要

定数

int CHUNK_HEADER_LEN

int DDMS_CMD

int DDMS_CMD_SET

フィールド

public static final int CHUNK_FAIL

public static final ByteOrder CHUNK_ORDER

パブリック コンストラクタ

ChunkHandler()

パブリック メソッド

static ByteBuffer allocBuffer(int maxChunkLen)

作成されるチャンクの要求に加えて、JDWP パケット ヘッダーと 1 つのチャンク ヘッダーを保持するのに十分なスペースを持つ ByteBuffer を割り当てます。

abstract void clientDisconnected(ClientImpl client)

クライアントが消滅しました。

abstract void clientReady(ClientImpl client)

クライアントの準備が整いました。

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

チャンクの先頭にチャンク ヘッダーを書き込みます。

static ByteBuffer getChunkDataBuf(ByteBuffer jdwpBuf)

チャンクデータのみを保持する JDWP パケット バッファのスライスを返します。

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

受信したチャンクを処理します。

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

4 文字の文字列を 32 ビット型に変換します。

保護されたメソッド

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

ハンドラによって認識されないハンドル チャンク。

定数

CHUNK_HEADER_LEN

public static final int CHUNK_HEADER_LEN

定数値: 8 (0x00000008)

DDMS_CMD

public static final int DDMS_CMD

定数値: 1 (0x00000001)

DDMS_CMD_SET

public static final int DDMS_CMD_SET

定数値: 199 (0x000000c7)

フィールド

CHUNK_FAIL

public static final int CHUNK_FAIL

CHUNK_ORDER

public static final ByteOrder CHUNK_ORDER

パブリック コンストラクタ

ChunkHandler

public ChunkHandler ()

パブリック メソッド

allocBuffer

public static ByteBuffer allocBuffer (int maxChunkLen)

作成されるチャンクの要求に加えて、JDWP パケット ヘッダーと 1 つのチャンク ヘッダーを保持するのに十分なスペースを持つ ByteBuffer を割り当てます。

「maxChunkLen」はチャンク コンテンツのサイズのみを示します。

パラメータ
maxChunkLen int

戻り値
ByteBuffer

clientDisconnected

public abstract void clientDisconnected (ClientImpl client)

クライアントが離れた。このクライアント接続に関連付けられたリソースをクリーンアップするために使用できます。

パラメータ
client ClientImpl

clientReady

public abstract void clientReady (ClientImpl client)

お客様の準備が整いました。クライアントが DDM 対応であると判断された場合(通常は HELO レスポンスを受信した後)、モニター スレッドはすべてのハンドラでこのメソッドを呼び出します。

ハンドラはこの機会を利用して、クライアントサイドのアクティビティを初期化できます。クライアントにメッセージを送信する可能性が高いため、このメソッドは IOException をスローできます。

パラメータ
client ClientImpl

finishChunkPacket

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

チャンクの先頭にチャンク ヘッダーを記述します。

JdwpPacket.getPayload() から返されたバイトバッファを渡します。

パラメータ
packet JdwpPacket

type int

chunkLen int

getChunkDataBuf

public static ByteBuffer getChunkDataBuf (ByteBuffer jdwpBuf)

チャンクデータのみを保持する JDWP パケット バッファのスライスを返します。

パラメータ
jdwpBuf ByteBuffer

戻り値
ByteBuffer

handleChunk

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

受信したチャンクを処理します。チャンク型「type」のデータは、「data」の先頭から始まり、data.limit() まで続きます。

「isReply」が設定されている場合、「msgId」はクライアントに送信したリクエストの ID になります。それ以外の場合は、クライアントがこのイベント用に生成した ID です。登録されていないチャンクが返信パケットで受信される可能性があります。

ハンドラは「data」の内容を変更できません。

パラメータ
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int

handlePacket

public void handlePacket (ClientImpl client, 
                JdwpPacket packet)

パラメータ
client ClientImpl

packet JdwpPacket

切片

public JdwpPacket intercept (JdwpAgent agent, 
                JdwpPacket packet)

パラメータ
agent JdwpAgent

packet JdwpPacket

戻り値
JdwpPacket

type

public static int type (String typeName)

4 文字の文字列を 32 ビット型に変換します。

パラメータ
typeName String

戻り値
int

保護されたメソッド

handleUnknownChunk

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

ハンドラによって認識されないハンドル チャンク。チャンクタイプが認識されない場合、サブクラスの handleChunk() メソッドはこれを呼び出す必要があります。

パラメータ
client ClientImpl

type int

data ByteBuffer

isReply boolean

msgId int