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