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 |