JdwpPacket
public
final
class
JdwpPacket
extends Object
| java.lang.Object | |
| ↳ | com.android.tradefed.device.server.jdwp.chunkhandler.JdwpPacket |
ByteBuffer のどこかの先頭にある JDWP パケット。
これにより、パケットのデコード結果でデータへの「ポインタ」をラップできます。
ここで実行されるオペレーションは同期されません。複数のスレッドが同じ ByteBuffer にアクセスする場合は、外部同期が必要になります。
コンストラクタを使用して空のパケットを作成するか、findPacket() を使用して既存のデータを JdwpPacket でラップします。
概要
定数 | |
|---|---|
int |
JDWP_HEADER_LEN
|
パブリック コンストラクタ | |
|---|---|
JdwpPacket(ByteBuffer buf)
「buf」に新しい空のパケットを作成します。 |
|
パブリック メソッド | |
|---|---|
void
|
consume()
JDWP パケットを消費します。 |
void
|
copy(ByteBuffer into)
パケットを新しいバッファにコピーするヘルパー関数。 |
static
JdwpPacket
|
findPacket(ByteBuffer buf)
|
static
JdwpPacket
|
findPacketHeader(ByteBuffer buf)
|
void
|
finishPacket(int cmdSet, int cmd, int payloadLength)
newPacket() で作成されたパケットを終了します。 |
int
|
getId()
パケットの ID を返します。 |
int
|
getLength()
パケットの長さを返します。 |
static
int
|
getPacketLength(ByteBuffer buf)
「buf」に JdwpPackets が含まれている場合、最初の 4 バイトはパケットの長さです。 |
ByteBuffer
|
getPayload()
JDWP ヘッダーの後に位置するバイトバッファのスライスをチャンク ヘッダーの先頭に返します。 |
boolean
|
is(int cmdSet, int cmd)
|
boolean
|
isEmpty()
この JDWP パケットにデータがない場合は「true」を返します。 |
boolean
|
isError()
この JDWP パケットがゼロ以外のエラーコードを含む返信である場合は「true」を返します。 |
boolean
|
isReply()
この JDWP パケットが返信としてタグ付けされている場合は「true」を返します。 |
void
|
log(String action)
|
void
|
move(ByteBuffer buf)
現在位置の buf に、パケットデータをバッファから「移動」します。 |
void
|
setPayload(ByteBuffer buf)
パッケージのペイロードをバッファに置き換えます。 |
String
|
toString()
|
void
|
write(SocketChannel chan)
パケットを「chan」に書き込みます。 |
定数
JDWP_HEADER_LEN
public static final int JDWP_HEADER_LEN
定数値: 11 (0x0000000b)
パブリック コンストラクタ
JdwpPacket
public JdwpPacket (ByteBuffer buf)
「buf」に新しい空のパケットを作成します。
| パラメータ | |
|---|---|
buf |
ByteBuffer |
パブリック メソッド
consume
public void consume ()
JDWP パケットを消費します。
エントリと終了時に、「position」はバッファ内のデータの末尾にあります。
コピー
public void copy (ByteBuffer into)
パケットを新しいバッファにコピーするヘルパー関数。
| パラメータ | |
|---|---|
into |
ByteBuffer |
findPacketHeader
public static JdwpPacket findPacketHeader (ByteBuffer buf)
| パラメータ | |
|---|---|
buf |
ByteBuffer |
| 戻り値 | |
|---|---|
JdwpPacket |
|
finishPacket
public void finishPacket (int cmdSet,
int cmd,
int payloadLength)newPacket() で作成されたパケットを終了します。
これにより、常にコマンド パケットが作成され、シーケンス内の次のシリアル番号が使用されます。
getPayload() から返された「スライス」の位置を確認できないため、「payloadLength」を引数として取得する必要があります。チャンク ヘッダーから取得することもできますが、JDWP パケットに複数のチャンクが存在することは合法です。
終了時に、「position」はデータの末尾を指します。
| パラメータ | |
|---|---|
cmdSet |
int |
cmd |
int |
payloadLength |
int |
getId
public int getId ()
パケットの ID を返します。返信パケットの場合、これにより返信を元のリクエストと照合できます。
| 戻り値 | |
|---|---|
int |
|
getLength
public int getLength ()
パケットの長さを返します。ヘッダーも含まれるため、空のパケットの長さは 11 バイトです。
| 戻り値 | |
|---|---|
int |
|
getPacketLength
public static int getPacketLength (ByteBuffer buf)
「buf」に JdwpPackets が含まれている場合、最初の 4 バイトはパケットの長さです。このヘルパー関数は最初の 4 バイトを読み取り、長さが JDWP ヘッダーのサイズ以上であることを検証します。
| パラメータ | |
|---|---|
buf |
ByteBuffer: jdwp パケットを含むと想定されるバッファ。 |
| 戻り値 | |
|---|---|
int |
長さが無効な場合は -1、それ以外の場合はパケットの長さ。 |
getPayload
public ByteBuffer getPayload ()
JDWP ヘッダーの後に位置するバイトバッファのスライスをチャンク ヘッダーの先頭まで返します。サイズがわかっている場合は、バッファの上限がペイロードのサイズに設定されます。構築中のパケットの場合は、バッファの末尾に設定されます。
パケットをまったく調べません。空のバッファで動作します。
| 戻り値 | |
|---|---|
ByteBuffer |
|
is
public boolean is (int cmdSet,
int cmd)| パラメータ | |
|---|---|
cmdSet |
int |
cmd |
int |
| 戻り値 | |
|---|---|
boolean |
|
isEmpty
public boolean isEmpty ()
この JDWP パケットにデータがない場合は「true」を返します。
| 戻り値 | |
|---|---|
boolean |
|
isError
public boolean isError ()
この JDWP パケットがゼロ以外のエラーコードを含む返信である場合は「true」を返します。
| 戻り値 | |
|---|---|
boolean |
|
isReply
public boolean isReply ()
この JDWP パケットが返信としてタグ付けされている場合は「true」を返します。
| 戻り値 | |
|---|---|
boolean |
|
log
public void log (String action)
| パラメータ | |
|---|---|
action |
String |
移動
public void move (ByteBuffer buf)
現在位置の buf に、パケットデータをバッファから「移動」します。
| パラメータ | |
|---|---|
buf |
ByteBuffer |
setPayload
public void setPayload (ByteBuffer buf)
パッケージのペイロードをバッファに置き換えます。現在の位置は変更されません。
| パラメータ | |
|---|---|
buf |
ByteBuffer |
toString
public String toString ()
| 戻り値 | |
|---|---|
String |
|
文章の作成
public void write (SocketChannel chan)
パケットを「chan」に書き込みます。
JDWP パケットはオフセット 0 で始まり、mBuffer.position() で終わります。
| パラメータ | |
|---|---|
chan |
SocketChannel |