JdwpPacket

public final class JdwpPacket
extends 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 ()

اگر این بسته JDWP داده‌ای نداشته باشد، مقدار "true" را برمی‌گرداند.

boolean isError ()

اگر این بسته JDWP یک پاسخ با کد خطای غیر صفر باشد، مقدار "true" را برمی‌گرداند.

boolean isReply ()

اگر این بسته JDWP به عنوان پاسخ برچسب‌گذاری شده باشد، مقدار "true" را برمی‌گرداند.

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

داده‌های بسته را از بافری که روی آن قرار داریم خارج کرده و در موقعیت فعلی به buf منتقل می‌کنیم.

void setPayload (ByteBuffer buf)

بار مفید بسته را با یک بافر جایگزین کنید.

String toString ()
void write (SocketChannel chan)

بسته ما را برای "چان" بنویسید.

ثابت‌ها

JDWP_HEADER_LEN

public static final int JDWP_HEADER_LEN

مقدار ثابت: ۱۱ (۰x۰۰۰۰۰۰۰۰b)

سازندگان عمومی

JdwpPacket

public JdwpPacket (ByteBuffer buf)

یک بسته جدید و خالی در "buf" ایجاد کنید.

پارامترها
buf ByteBuffer

روش‌های عمومی

مصرف کردن

public void consume ()

بسته JDWP را مصرف کنید.

در هنگام ورود و خروج، "موقعیت" در انتهای داده‌ها در بافر قرار دارد.

کپی

public void copy (ByteBuffer into)

تابع کمکی برای کپی کردن بسته در یک بافر جدید.

پارامترها
into ByteBuffer

پیدا کردن بسته

public static JdwpPacket findPacket (ByteBuffer buf)

پارامترها
buf ByteBuffer

بازگشت‌ها
JdwpPacket

پیدا کردن سربرگ بسته

public static JdwpPacket findPacketHeader (ByteBuffer buf)

پارامترها
buf ByteBuffer

بازگشت‌ها
JdwpPacket

بسته‌ی پایانی

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

تکمیل یک بسته ایجاد شده با newPacket().

این همیشه یک بسته فرمان ایجاد می‌کند که شماره سریال بعدی به ترتیب در آن قرار دارد.

ما باید "payloadLength" را به عنوان یک آرگومان در نظر بگیریم زیرا نمی‌توانیم موقعیت "slice" برگردانده شده توسط getPayload() را ببینیم. می‌توانیم آن را از هدر تکه استخراج کنیم، اما وجود بیش از یک تکه در یک بسته JDWP قانونی است.

در هنگام خروج، "موقعیت" به انتهای داده‌ها اشاره می‌کند.

پارامترها
cmdSet int

cmd int

payloadLength int

دریافت شناسه

public int getId ()

شناسه بسته را برمی‌گرداند. برای یک بسته پاسخ، این به ما امکان می‌دهد تا پاسخ را با درخواست اصلی مطابقت دهیم.

بازگشت‌ها
int

طول دریافت

public int getLength ()

طول یک بسته را برمی‌گرداند. این شامل هدر نیز می‌شود، بنابراین یک بسته خالی 11 بایت طول دارد.

بازگشت‌ها
int

طول بسته را دریافت کنید

public static int getPacketLength (ByteBuffer buf)

وقتی "buf" شامل JdwpPackets باشد، ۴ بایت اول طول بسته را نشان می‌دهد. این تابع کمکی ۴ بایت اول را می‌خواند و تأیید می‌کند که طول آن حداقل به اندازه هدر JDWP باشد.

پارامترها
buf ByteBuffer : بافری که فرض می‌شود حاوی یک بسته jdwp است.

بازگشت‌ها
int اگر طول نامعتبر باشد -1 و در غیر این صورت طول بسته.

دریافت بار مفید

public ByteBuffer getPayload ()

یک برش از بافر بایت را که بعد از هدر JDWP تا ابتدای هدر تکه قرار دارد، برمی‌گرداند. در صورت مشخص بودن اندازه‌ی بار داده، محدودیت بافر برابر با اندازه‌ی بار داده تنظیم می‌شود؛ اگر این یک بسته در حال ساخت باشد، محدودیت در انتهای بافر تنظیم می‌شود.

اصلاً بسته را بررسی نمی‌کند -- روی بافرهای خالی کار می‌کند.

بازگشت‌ها
ByteBuffer

است

public boolean is (int cmdSet, 
                int cmd)

پارامترها
cmdSet int

cmd int

بازگشت‌ها
boolean

خالی است

public boolean isEmpty ()

اگر این بسته JDWP داده‌ای نداشته باشد، مقدار "true" را برمی‌گرداند.

بازگشت‌ها
boolean

خطا

public boolean isError ()

اگر این بسته JDWP یک پاسخ با کد خطای غیر صفر باشد، مقدار "true" را برمی‌گرداند.

بازگشت‌ها
boolean

پاسخ است

public boolean isReply ()

اگر این بسته JDWP به عنوان پاسخ برچسب‌گذاری شده باشد، مقدار "true" را برمی‌گرداند.

بازگشت‌ها
boolean

ورود به سیستم

public void log (String action)

پارامترها
action String

حرکت

public void move (ByteBuffer buf)

داده‌های بسته را از بافری که روی آن قرار داریم خارج کرده و در موقعیت فعلی به buf منتقل می‌کنیم.

پارامترها
buf ByteBuffer

تنظیم بار مفید

public void setPayload (ByteBuffer buf)

مقدار بار بسته را با یک بافر جایگزین کنید. موقعیت فعلی بدون تغییر باقی می‌ماند.

پارامترها
buf ByteBuffer

رشته‌ی دوتایی

public String toString ()

بازگشت‌ها
String

بنویس

public void write (SocketChannel chan)

بسته ما را برای "چان" بنویسید.

بسته JDWP از offset 0 شروع می‌شود و در mBuffer.position() پایان می‌یابد.

پارامترها
chan SocketChannel