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، تكون أول 4 بايتات هي طول الحزمة.

ByteBuffer getPayload()

لعرض شريحة من مخزن مؤقت للبايتات، يتم وضعها بعد عنوان JDWP إلى بداية عنوان الجزء.

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

تعرِض هذه السمة القيمة "true" إذا لم تكن حزمة JDWP هذه تحتوي على أي بيانات.

boolean isError()

تعرِض القيمة "true" إذا كانت حزمة JDWP هذه ردًا يتضمّن رمز خطأ غير صفري.

boolean isReply()

تعرض هذه السمة القيمة "true" إذا تم تصنيف حزمة JDWP هذه على أنّها ردّ.

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

Constant Value: 11 (0x0000000b)

الإنشاءات العامة

JdwpPacket

public JdwpPacket (ByteBuffer buf)

أنشئ حزمة جديدة فارغة في "buf".

المعلمات
buf ByteBuffer

الطُرق العامة

استهلاك

public void consume ()

استهلاك حزمة JDWP

عند الدخول والخروج، يكون "الموضع" في نهاية البيانات في المخزن المؤقت.

نسخ

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.

عند الخروج، يشير "الموضع" إلى نهاية البيانات.

المعلمات
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 بايتات هي طول الحزمة. تقرأ دالة المساعدة هذه أول 4 بايتات وتتحقّق من أنّ الطول يساوي على الأقل حجم عنوان JDWP.

المعلمات
buf ByteBuffer: مخزن مؤقت يُفترض أنّه يحتوي على حزمة JDWP.

المرتجعات
int ‫-1 إذا كان الطول غير صالح، وإلا يكون طول الحزمة.

getPayload

public ByteBuffer getPayload ()

لعرض شريحة من مخزن مؤقت للبايتات، يتم وضعها بعد عنوان JDWP إلى بداية عنوان الجزء. سيتم ضبط الحد الأقصى للمخزن المؤقت على حجم الحمولة إذا كان الحجم معروفًا، وإذا كانت هذه حزمة قيد الإنشاء، سيتم ضبط الحد الأقصى على نهاية المخزن المؤقت.

لا يفحص الحزمة على الإطلاق، بل يعمل على المخازن المؤقتة الفارغة.

المرتجعات
ByteBuffer

هو

public boolean is (int cmdSet, 
                int cmd)

المعلمات
cmdSet int

cmd int

المرتجعات
boolean

isEmpty

public boolean isEmpty ()

تعرِض هذه السمة القيمة "true" إذا لم تكن حزمة JDWP هذه تحتوي على أي بيانات.

المرتجعات
boolean

isError

public boolean isError ()

تعرِض القيمة "true" إذا كانت حزمة JDWP هذه ردًا يتضمّن رمز خطأ غير صفري.

المرتجعات
boolean

isReply

public boolean isReply ()

تعرض هذه السمة القيمة "true" إذا تم تصنيف حزمة JDWP هذه على أنّها ردّ.

المرتجعات
boolean

لوغاريتم

public void log (String action)

المعلمات
action String

نقل

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