JdwpPacket

public final class JdwpPacket
extends Object

java.lang.Object
   ↳ com.android.tradefed.device.server.jdwp.chunkhandler.JdwpPacket


ByteBuffer의 시작 부분에 있는 JDWP 패킷입니다.

이를 통해 패킷을 디코딩한 결과로 데이터에 대한 '포인터'를 래핑할 수 있습니다.

여기서는 어떤 작업도 동기화되지 않습니다. 여러 스레드가 동일한 ByteBuffers에 액세스하는 경우 외부 동기화가 필요합니다.

생성자를 사용하여 빈 패킷을 만들거나 '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 패킷이 0이 아닌 오류 코드가 있는 응답인 경우 '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

findPacket

public static JdwpPacket findPacket (ByteBuffer buf)

매개변수
buf ByteBuffer

반환 값
JdwpPacket

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 패킷이 0이 아닌 오류 코드가 있는 응답인 경우 'true'를 반환합니다.

반환 값
boolean

isReply

public boolean isReply ()

이 JDWP 패킷이 응답으로 태그된 경우 'true'를 반환합니다.

반환 값
boolean

log

public void log (String action)

매개변수
action String

move

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