JdwpPacket

public final class JdwpPacket
extends Object

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


Bir ByteBuffer'ın başında bulunan bir JDWP paketi.

Bu sayede, paketin kodunu çözme sonuçlarıyla birlikte verilere bir "işaretçi" ekleyebiliriz.

Buradaki işlemlerin hiçbiri senkronize edilmez. Birden fazla iş parçacığı aynı ByteBuffer'lara erişecekse harici senkronizasyon gerekir.

Boş bir paket oluşturmak için oluşturucuyu veya mevcut verileri JdwpPacket ile sarmak için "findPacket()" işlevini kullanın.

Özet

Sabitler

int JDWP_HEADER_LEN

Herkese açık oluşturucular

JdwpPacket(ByteBuffer buf)

"buf" içinde yeni ve boş bir paket oluşturur.

Herkese açık yöntemler

void consume()

JDWP paketini kullanın.

void copy(ByteBuffer into)

Paketi yeni bir arabelleğe kopyalamak için yardımcı işlev.

static JdwpPacket findPacket(ByteBuffer buf)
static JdwpPacket findPacketHeader(ByteBuffer buf)
void finishPacket(int cmdSet, int cmd, int payloadLength)

newPacket() ile oluşturulan bir paketi tamamlayın.

int getId()

Paketin kimliğini döndürür.

int getLength()

Bir paketin uzunluğunu döndürür.

static int getPacketLength(ByteBuffer buf)

"buf" JdwpPackets içerdiğinde ilk 4 bayt, paketin uzunluğudur.

ByteBuffer getPayload()

Bayt arabelleğinin bir dilimini döndürür. Bu dilim, JDWP başlığının ötesinde ve parça başlığının başlangıcında konumlandırılır.

boolean is(int cmdSet, int cmd)
boolean isEmpty()

Bu JDWP paketinde veri yoksa "true" değerini döndürür.

boolean isError()

Bu JDWP paketi sıfır olmayan bir hata koduyla yanıt veriyorsa "true" değerini döndürür.

boolean isReply()

Bu JDWP paketi yanıt olarak etiketlenmişse "true" değerini döndürür.

void log(String action)
void move(ByteBuffer buf)

Paket verilerini, üzerinde bulunduğumuz arabellekten çıkarıp geçerli konumdaki buf'a"taşıyın".

void setPayload(ByteBuffer buf)

Paketin yükünü bir arabellek ile değiştirin.

String toString()
void write(SocketChannel chan)

Paketimizi "chan"e yaz.

Sabitler

JDWP_HEADER_LEN

public static final int JDWP_HEADER_LEN

Sabit Değer: 11 (0x0000000b)

Herkese açık oluşturucular

JdwpPacket

public JdwpPacket (ByteBuffer buf)

"buf" içinde yeni ve boş bir paket oluşturur.

Parametreler
buf ByteBuffer

Herkese açık yöntemler

tüketmek

public void consume ()

JDWP paketini kullanın.

Giriş ve çıkışta "konum", arabellekteki verilerin sonunda yer alır.

kopyala

public void copy (ByteBuffer into)

Paketi yeni bir arabelleğe kopyalamak için yardımcı işlev.

Parametreler
into ByteBuffer

findPacket

public static JdwpPacket findPacket (ByteBuffer buf)

Parametreler
buf ByteBuffer

İlerlemeler
JdwpPacket

findPacketHeader

public static JdwpPacket findPacketHeader (ByteBuffer buf)

Parametreler
buf ByteBuffer

İlerlemeler
JdwpPacket

finishPacket

public void finishPacket (int cmdSet, 
                int cmd, 
                int payloadLength)

newPacket() ile oluşturulan bir paketi tamamlayın.

Bu işlem her zaman, sıradaki bir sonraki seri numarasıyla bir komut paketi oluşturur.

getPayload() tarafından döndürülen "slice" içinde konumu göremediğimiz için "payloadLength"i bağımsız değişken olarak almamız gerekiyor. Bunu parça başlığından çıkarabiliriz ancak bir JDWP paketinde birden fazla parça olması yasal.

Çıkışta "konum" verilerin sonunu gösterir.

Parametreler
cmdSet int

cmd int

payloadLength int

getId

public int getId ()

Paketin kimliğini döndürür. Bu, yanıt paketinde yanıtı orijinal istekle eşleştirmemize olanak tanır.

İlerlemeler
int

getLength

public int getLength ()

Bir paketin uzunluğunu döndürür. Başlık da buna dahildir. Bu nedenle boş bir paket 11 bayt uzunluğundadır.

İlerlemeler
int

getPacketLength

public static int getPacketLength (ByteBuffer buf)

"buf" JdwpPackets içerdiğinde ilk 4 bayt, paketin uzunluğudur. Bu yardımcı işlev, ilk 4 baytı okur ve uzunluğun en az JDWP başlığı boyutu kadar olduğunu doğrular.

Parametreler
buf ByteBuffer: Bir jdwp paketi içerdiği varsayılan arabellek.

İlerlemeler
int Uzunluk geçersizse -1, aksi takdirde paketin uzunluğu.

getPayload

public ByteBuffer getPayload ()

Bayt arabelleğinin bir dilimini döndürür. Bu dilim, JDWP başlığının ötesinde, parça başlığının başlangıcında konumlandırılır. Boyut biliniyorsa arabelleğin sınırı yükün boyutuna ayarlanır. Bu, yapım aşamasında olan bir paketse sınır arabelleğin sonuna ayarlanır.

Paketi hiç incelemez. Boş arabelleklerde çalışır.

İlerlemeler
ByteBuffer

is

public boolean is (int cmdSet, 
                int cmd)

Parametreler
cmdSet int

cmd int

İlerlemeler
boolean

isEmpty

public boolean isEmpty ()

Bu JDWP paketinde veri yoksa "true" değerini döndürür.

İlerlemeler
boolean

isError

public boolean isError ()

Bu JDWP paketi sıfır olmayan bir hata koduyla yanıt veriyorsa "true" değerini döndürür.

İlerlemeler
boolean

isReply

public boolean isReply ()

Bu JDWP paketi yanıt olarak etiketlenmişse "true" değerini döndürür.

İlerlemeler
boolean

log

public void log (String action)

Parametreler
action String

aktarma

public void move (ByteBuffer buf)

Paket verilerini, üzerinde bulunduğumuz arabellekten çıkarıp geçerli konumdaki buf'a"taşıyın".

Parametreler
buf ByteBuffer

setPayload

public void setPayload (ByteBuffer buf)

Paketin yükünü bir arabellekle değiştirin. Mevcut konum değişmez.

Parametreler
buf ByteBuffer

toString

public String toString ()

İlerlemeler
String

yardım et

public void write (SocketChannel chan)

Paketimizi "chan"e yaz.

JDWP paketi, 0 uzaklığında başlar ve mBuffer.position() uzaklığında sona erer.

Parametreler
chan SocketChannel