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 |