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