JdwpPacket
public
final
class
JdwpPacket
extends Object
| java.lang.Object | |
| ↳ | com.android.tradefed.device.server.jdwp.chunkhandler.JdwpPacket |
यह JDWP पैकेट है, जो ByteBuffer की शुरुआत में मौजूद है.
इससे हमें पैकेट को डिकोड करने के नतीजों के साथ, डेटा के "पॉइंटर" को रैप करने की अनुमति मिलती है.
यहां मौजूद कोई भी ऑपरेशन सिंक नहीं किया गया है. अगर कई थ्रेड एक ही 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()
पैकेट का आईडी दिखाता है. |
int
|
getLength()
पैकेट की लंबाई दिखाता है. |
static
int
|
getPacketLength(ByteBuffer buf)
जब "buf" में JdwpPackets होते हैं, तो पहले चार बाइट पैकेट की लंबाई होती है. |
ByteBuffer
|
getPayload()
बाइट बफ़र का एक स्लाइस दिखाता है. यह स्लाइस, JDWP हेडर के बाद से लेकर चंक हेडर की शुरुआत तक होता है. |
boolean
|
is(int cmdSet, int cmd)
|
boolean
|
isEmpty()
अगर इस JDWP पैकेट में कोई डेटा नहीं है, तो "true" वैल्यू मिलती है. |
boolean
|
isError()
अगर यह JDWP पैकेट, शून्य से अलग गड़बड़ी कोड वाला जवाब है, तो "true" दिखाता है. |
boolean
|
isReply()
अगर इस JDWP पैकेट को जवाब के तौर पर टैग किया गया है, तो "true" वैल्यू मिलती है. |
void
|
log(String action)
|
void
|
move(ByteBuffer buf)
हम जिस बफ़र पर हैं उससे पैकेट डेटा को "Move" करें और उसे मौजूदा पोज़िशन पर 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 |
सार्वजनिक तरीके
उपयोग करना
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() का इस्तेमाल करके बनाए गए पैकेट को पूरा करता है.
इससे हमेशा एक कमांड पैकेट बनता है. इसमें क्रम के हिसाब से अगला सीरियल नंबर होता है.
हमें "payloadLength" को एक तर्क के तौर पर लेना होगा, क्योंकि हम getPayload() से मिले "स्लाइस" में पोज़िशन नहीं देख सकते. हम इसे चंक हेडर से निकाल सकते हैं, लेकिन JDWP पैकेट में एक से ज़्यादा चंक हो सकते हैं.
बाहर निकलने पर, "position" डेटा के आखिर में पॉइंट करता है.
| पैरामीटर | |
|---|---|
cmdSet |
int |
cmd |
int |
payloadLength |
int |
getId
public int getId ()
पैकेट का आईडी दिखाता है. जवाब वाले पैकेट के लिए, इससे हमें जवाब को मूल अनुरोध से मैच करने में मदद मिलती है.
| रिटर्न | |
|---|---|
int |
|
getLength
public int getLength ()
पैकेट की लंबाई दिखाता है. इसमें हेडर शामिल होता है. इसलिए, खाली पैकेट 11 बाइट लंबा होता है.
| रिटर्न | |
|---|---|
int |
|
getPacketLength
public static int getPacketLength (ByteBuffer buf)
जब "buf" में JdwpPackets होते हैं, तो पहले चार बाइट पैकेट की लंबाई होती है. यह हेल्पर फ़ंक्शन, पहले 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 पैकेट, शून्य से अलग गड़बड़ी कोड वाला जवाब है, तो "true" दिखाता है.
| रिटर्न | |
|---|---|
boolean |
|
isReply
public boolean isReply ()
अगर इस JDWP पैकेट को जवाब के तौर पर टैग किया गया है, तो "true" वैल्यू मिलती है.
| रिटर्न | |
|---|---|
boolean |
|
log
public void log (String action)
| पैरामीटर | |
|---|---|
action |
String |
ट्रांसफ़र
public void move (ByteBuffer buf)
हम जिस बफ़र पर हैं उससे पैकेट डेटा को "Move" करें और उसे मौजूदा पोज़िशन पर 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 |