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 |