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 | |
Создайте подкласс с классом, который обрабатывает один или несколько типов фрагментов.
Краткое содержание
Константы | |
|---|---|
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)Выделите ByteBuffer с достаточным пространством для хранения заголовка пакета JDWP и одного заголовка фрагмента в дополнение к требованиям создаваемого фрагмента. |
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)
Выделите ByteBuffer с достаточным пространством для хранения заголовка пакета JDWP и одного заголовка фрагмента в дополнение к требованиям создаваемого фрагмента.
«maxChunkLen» указывает только размер содержимого фрагмента.
| Параметры | |
|---|---|
maxChunkLen | int |
| Возврат | |
|---|---|
ByteBuffer | |
клиентОтключен
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» будет идентификатором запроса, отправленного клиенту. В противном случае это идентификатор, сгенерированный клиентом для данного события. Обратите внимание, что в ответных пакетах могут быть фрагменты данных, для которых мы не зарегистрированы.
Обработчик не может изменять содержимое «данных».
| Параметры | |
|---|---|
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 | |
тип
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 |