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)

생성되는 청크의 요구사항 외에 JDWP 패킷 헤더와 청크 헤더 하나를 보유할 충분한 공간이 있는 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 패킷 헤더와 청크 헤더 하나를 보유할 충분한 공간이 있는 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

유형

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