موتور جاوا کرونت

public final class JavaCronetEngine extends CronetEngineBase


java.net.HttpURLConnection با پشتیبانی CronetEngine.

از نت‌لاگ‌ها، اندازه‌گیری داده‌های منتقل‌شده، bidistream، حافظه پنهان یا اولویت پشتیبانی نمی‌کند.

خلاصه

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

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

void

یک شنونده (listener) ثبت می‌کند که پس از پایان هر درخواست با اطلاعات درخواست فراخوانی می‌شود.

void

یک شنونده ثبت می‌کند که هر زمان که تخمین‌گر کیفیت شبکه شاهد یک زمان رفت و برگشت نمونه باشد، فراخوانی می‌شود.

void

یک شنونده ثبت می‌کند که هر زمان که تخمین‌گر کیفیت شبکه شاهد اندازه‌گیری نمونه‌ای از توان عملیاتی باشد، فراخوانی می‌شود.

void
bindToNetwork (long networkHandle)

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

void
configureNetworkQualityEstimatorForTesting (
boolean useLocalHostRequests,
boolean useSmallerResponses,
boolean disableOfflineCheck
)

تخمین‌گر کیفیت شبکه را برای آزمایش پیکربندی می‌کند.

ExperimentalUrlRequest
createRequest (
String url,
UrlRequest.Callback callback,
Executor executor,
int priority,
Collection < Object > connectionAnnotations,
boolean disableCache,
boolean disableConnectionMigration,
boolean allowDirectExecutor,
boolean trafficStatsTagSet,
int trafficStatsTag,
boolean trafficStatsUidSet,
int trafficStatsUid,
RequestFinishedInfo.Listener requestFinishedListener,
int idempotency,
long networkHandle,
String method,
ArrayList < Map.Entry < String , String >> requestHeaders,
UploadDataProvider uploadDataProvider,
Executor uploadDataProviderExecutor,
byte[] sharedDictionaryHash,
ByteBuffer sharedDictionary,
@ NonNull String sharedDictionaryId
)
URLStreamHandlerFactory

یک URLStreamHandlerFactory برای مدیریت ترافیک HTTP و HTTPS ایجاد می‌کند.

int

تعداد درخواست‌های فعال را برمی‌گرداند.

int

تخمین توان عملیاتی پایین‌دست (برحسب کیلوبیت بر ثانیه) محاسبه‌شده توسط تخمین‌گر کیفیت شبکه را برمی‌گرداند.

int

تخمینی از نوع اتصال مؤثر محاسبه شده توسط تخمین‌گر کیفیت شبکه را برمی‌گرداند.

byte[]

این روش منسوخ شده است.

در نسخه‌های مدرن Cronet، این دستور همیشه یک آرایه خالی برمی‌گرداند.

int

تخمین HTTP RTT (به میلی ثانیه) محاسبه شده توسط تخمین گر کیفیت شبکه را برمی‌گرداند.

int

تخمین RTT انتقال (برحسب میلی‌ثانیه) محاسبه‌شده توسط تخمین‌گر کیفیت شبکه را برمی‌گرداند.

String
URLConnection

یک اتصال جدید به منبع مشخص شده توسط URL url برقرار می‌کند.

URLConnection
openConnection ( URL url, Proxy proxy)

با استفاده از پروکسی داده شده url یک اتصال جدید به منبع مشخص شده توسط URL برقرار می‌کند.

void

یک شنونده درخواست تکمیل‌شده را حذف می‌کند.

void

اگر قبلاً شنونده‌ای از زمان‌های رفت و برگشت را با addRttListener ثبت کرده باشید، آن را حذف می‌کند.

void

شنونده‌ای از توان عملیاتی را حذف می‌کند.

void

اگر هیچ درخواست فعالی وجود نداشته باشد، CronetEngine خاموش می‌کند، در غیر این صورت یک استثنا ایجاد می‌کند.

void
startNetLogToDisk ( String dirPath, boolean logAll, int maxSize)

ثبت وقایع NetLog را در یک دایرکتوری مشخص با اندازه محدود آغاز می‌کند.

void
startNetLogToFile ( String fileName, boolean logAll)

ثبت وقایع NetLog در یک فایل را آغاز می‌کند.

void

ثبت وقایع NetLog را متوقف کرده و فایل را روی دیسک خالی می‌کند.

روش‌های محافظت‌شده

ExperimentalBidirectionalStream
createBidirectionalStream (
String url,
BidirectionalStream.Callback callback,
Executor executor,
String httpMethod,
List < Map.Entry < String , String >> requestHeaders,
@ CronetEngineBase.StreamPriority int priority,
boolean delayRequestHeadersUntilFirstFlush,
Collection < Object > connectionAnnotations,
boolean trafficStatsTagSet,
int trafficStatsTag,
boolean trafficStatsUidSet,
int trafficStatsUid,
long networkHandle
)

ثابت‌های ارث‌بری‌شده

از org.chromium.net.CronetEngine
static final int

مقدار تعداد درخواست‌های فعال ناشناخته است.

از org.chromium.net.impl.CronetEngineBase
static final long

روش‌های ارثی

از org.chromium.net.impl.CronetEngineBase
ExperimentalUrlRequest.Builder

یک سازنده برای UrlRequest ایجاد می‌کند.

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

موتور جاوا کرونت

public JavaCronetEngine(CronetEngineBuilderImpl builder)

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

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

یک شنونده (listener) ثبت می‌کند که پس از پایان هر درخواست با اطلاعات درخواست فراخوانی می‌شود.

شنونده (listener) توسط یک java.util.concurrent.Executor که توسط شنونده ارائه شده است، فراخوانی می‌شود.

پارامترها
RequestFinishedInfo.Listener listener

شنونده برای درخواست‌های تکمیل‌شده.

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

یک شنونده (listener) ثبت می‌کند که هر زمان که تخمین‌گر کیفیت شبکه شاهد یک زمان رفت و برگشت نمونه باشد، فراخوانی می‌شود. این باید پس از enableNetworkQualityEstimator فراخوانی شود و در غیر این صورت یک استثنا ایجاد کند. زمان‌های رفت و برگشت ممکن است در لایه‌های مختلف پشته شبکه، از جمله TCP، QUIC و در لایه درخواست URL ثبت شوند. شنونده در java.util.concurrent.Executor که به enableNetworkQualityEstimator ارسال می‌شود، فراخوانی می‌شود.

پارامترها
NetworkQualityRttListener listener

شنونده‌ی زمان‌های رفت و برگشت.

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

یک شنونده (listener) ثبت می‌کند که هر زمان که تخمین‌گر کیفیت شبکه شاهد اندازه‌گیری نمونه‌ای از توان عملیاتی باشد، فراخوانی می‌شود. این باید پس از enableNetworkQualityEstimator فراخوانی شود. مشاهدات توان عملیاتی با اندازه‌گیری بایت‌های خوانده شده از رابط شبکه فعال در زمان‌هایی که حداقل یک پاسخ URL دریافت می‌شود، محاسبه می‌شوند. شنونده (listener) در java.util.concurrent.Executor که به enableNetworkQualityEstimator ارسال می‌شود، فراخوانی می‌شود.

پارامترها
NetworkQualityThroughputListener listener

شنونده‌ی توان عملیاتی.

bindToNetwork

public void bindToNetwork(long networkHandle)

موتور را به دسته شبکه مشخص شده متصل می‌کند. تمام درخواست‌های ایجاد شده از طریق این موتور از شبکه مرتبط با این دسته استفاده می‌کنند. اگر این شبکه قطع شود، تمام درخواست‌ها با شکست مواجه می‌شوند، خطای دقیق به مرحله پردازش درخواست هنگام قطع شبکه بستگی دارد. دسته‌های شبکه را می‌توان از طریق Network#getNetworkHandle دریافت کرد. فقط از اندروید مارشمالو به بعد در دسترس است.

پارامترها
long networkHandle

شناسه شبکه‌ای که موتور به آن متصل می‌شود. برای لغو اتصال، UNBIND_NETWORK_HANDLE را مشخص کنید.

پیکربندی NetworkQualityEstimatorForTesting

public void configureNetworkQualityEstimatorForTesting(
    boolean useLocalHostRequests,
    boolean useSmallerResponses,
    boolean disableOfflineCheck
)

تخمین‌گر کیفیت شبکه را برای آزمایش پیکربندی می‌کند. این تابع باید قبل از اضافه شدن شنونده‌های زمان رفت و برگشت و توان عملیاتی و پس از فعال شدن تخمین‌گر کیفیت شبکه فراخوانی شود.

پارامترها
boolean useLocalHostRequests

درخواست‌ها به localhost را در تخمین‌ها لحاظ کنید.

boolean useSmallerResponses

پاسخ‌های کوچک را در تخمین‌های توان عملیاتی لحاظ کنید.

boolean disableOfflineCheck

وقتی روی درست تنظیم شده باشد، بررسی‌های آفلاین دستگاه را هنگام محاسبه نوع اتصال مؤثر یا هنگام نوشتن تنظیمات برگزیده غیرفعال می‌کند.

درخواست ایجاد

public ExperimentalUrlRequest createRequest(
    String url,
    UrlRequest.Callback callback,
    Executor executor,
    int priority,
    Collection<Object> connectionAnnotations,
    boolean disableCache,
    boolean disableConnectionMigration,
    boolean allowDirectExecutor,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    RequestFinishedInfo.Listener requestFinishedListener,
    int idempotency,
    long networkHandle,
    String method,
    ArrayList<Map.Entry<StringString>> requestHeaders,
    UploadDataProvider uploadDataProvider,
    Executor uploadDataProviderExecutor,
    byte[] sharedDictionaryHash,
    ByteBuffer sharedDictionary,
    @NonNull String sharedDictionaryId
)

تابع createURLStreamHandlerFactory

public URLStreamHandlerFactory createURLStreamHandlerFactory()

یک URLStreamHandlerFactory برای مدیریت ترافیک HTTP و HTTPS ایجاد می‌کند. یک نمونه از این کلاس را می‌توان از طریق setURLStreamHandlerFactory نصب کرد و بدین ترتیب از این CronetEngine به طور پیش‌فرض برای همه درخواست‌های ایجاد شده از طریق openConnection استفاده کرد.

کرونت از برخی ویژگی‌های HTTP ارائه شده توسط سیستم استفاده نمی‌کند:

  • حافظه پنهان HTTP که از طریق HttpResponseCache.install() نصب شده است
  • روش احراز هویت HTTP که از طریق setDefault نصب شده است
  • محل ذخیره‌سازی کوکی HTTP که از طریق setDefault نصب شده است

در حالی که Cronet از درخواست‌های با استفاده از پروتکل HTTPS پشتیبانی و تشویق می‌کند، Cronet از API HttpsURLConnection پشتیبانی نمی‌کند. این عدم پشتیبانی همچنین شامل عدم استفاده از برخی ویژگی‌های HTTPS ارائه شده از طریق سیستم می‌شود:

بازگشت‌ها
URLStreamHandlerFactory

یک نمونه URLStreamHandlerFactory که توسط این CronetEngine پیاده‌سازی شده است.

getActiveRequestCount

public int getActiveRequestCount()

تعداد درخواست‌های فعال را برمی‌گرداند.

یک درخواست در UrlRequest.start() "فعال" می‌شود، با فرض اینکه متد هیچ استثنایی ایجاد نکند. زمانی که تمام فراخوانی‌های برگشتی بازگشت داده شوند و هیچ فراخوانی برگشتی دیگری در آینده نتواند فعال شود، غیرفعال می‌شود. در عمل، این بدان معناست که درخواست زمانی غیرفعال می‌شود که onSucceeded/onCanceled/onFailed بازگشت داده شوند و تمام شنونده‌های درخواست تکمیل شده بازگشته باشند. برای اطلاعات بیشتر به چرخه عمر درخواست‌های Cronet مراجعه کنید .

دریافت DownstreamThroughputKbps

public int getDownstreamThroughputKbps()

تخمین توان عملیاتی پایین‌دست (برحسب کیلوبیت بر ثانیه) محاسبه‌شده توسط تخمین‌گر کیفیت شبکه را برمی‌گرداند. اگر مقدار در دسترس نباشد، روی CONNECTION_METRIC_UNKNOWN تنظیم می‌شود. این باید پس از enableNetworkQualityEstimator فراخوانی شود و در غیر این صورت، یک استثنا ایجاد می‌کند.

بازگشت‌ها
int

تخمین توان عملیاتی پایین‌دست بر حسب کیلوبیت بر ثانیه.

نوع اتصال موثر را دریافت کنید

public int getEffectiveConnectionType()

تخمینی از نوع اتصال مؤثر محاسبه‌شده توسط تخمین‌گر کیفیت شبکه را برمی‌گرداند. برای شروع محاسبه این مقدار، تابع enableNetworkQualityEstimator را فراخوانی کنید.

بازگشت‌ها
int

نوع اتصال تخمینی. مقدار برگشتی یکی از موارد EFFECTIVE_CONNECTION_TYPE_* است.

getGlobalMetricsDeltas

public byte[] getGlobalMetricsDeltas()

دریافتHttpRttMs

public int getHttpRttMs()

تخمین HTTP RTT (به میلی‌ثانیه) محاسبه‌شده توسط تخمین‌گر کیفیت شبکه را برمی‌گرداند. اگر مقدار در دسترس نباشد، روی CONNECTION_METRIC_UNKNOWN تنظیم می‌شود. این باید پس از enableNetworkQualityEstimator فراخوانی شود و در غیر این صورت، یک استثنا ایجاد می‌کند.

بازگشت‌ها
int

تخمین زمان HTTP RTT بر حسب میلی‌ثانیه.

دریافت حمل و نقلRttMs

public int getTransportRttMs()

تخمین RTT انتقال (به میلی‌ثانیه) محاسبه‌شده توسط تخمین‌گر کیفیت شبکه را برمی‌گرداند. اگر مقدار در دسترس نباشد، روی CONNECTION_METRIC_UNKNOWN تنظیم می‌شود. این باید پس از enableNetworkQualityEstimator فراخوانی شود و در غیر این صورت یک استثنا ایجاد می‌کند.

بازگشت‌ها
int

تخمین RTT انتقالی بر حسب میلی‌ثانیه.

رشته‌ی دریافت نسخه

public String getVersionString()
بازگشت‌ها
String

یک رشته نسخه قابل خواندن توسط انسان از موتور.

اتصال باز

public URLConnection openConnection(URL url)

یک اتصال جدید به منبع مشخص شده توسط URL url برقرار می‌کند.

نکته: پیاده‌سازی java.net.HttpURLConnection در Cronet محدودیت‌های خاصی دارد، برای جزئیات بیشتر به createURLStreamHandlerFactory مراجعه کنید.

پارامترها
URL url

آدرس اینترنتی منبعی که باید به آن متصل شوید.

بازگشت‌ها
URLConnection

یک نمونه java.net.HttpURLConnection که توسط این CronetEngine پیاده‌سازی شده است.

پرتاب‌ها
java.io.IOException

اگر هنگام باز کردن اتصال خطایی رخ دهد.

اتصال باز

public URLConnection openConnection(URL url, Proxy proxy)

با استفاده از پروکسی داده شده url یک اتصال جدید به منبع مشخص شده توسط URL برقرار می‌کند.

نکته: پیاده‌سازی java.net.HttpURLConnection در Cronet محدودیت‌های خاصی دارد، برای جزئیات بیشتر به createURLStreamHandlerFactory مراجعه کنید.

پارامترها
URL url

آدرس اینترنتی منبعی که باید به آن متصل شوید.

Proxy proxy

پروکسی برای استفاده هنگام برقراری اتصال.

بازگشت‌ها
URLConnection

یک نمونه java.net.HttpURLConnection که توسط این CronetEngine پیاده‌سازی شده است.

پرتاب‌ها
java.io.IOException

اگر هنگام باز کردن اتصال خطایی رخ دهد.

removeRequestFinishedListener

public void removeRequestFinishedListener(RequestFinishedInfo.Listener listener)

یک شنونده درخواست تکمیل‌شده را حذف می‌کند.

پارامترها
RequestFinishedInfo.Listener listener

شنونده‌ای که باید حذف شود.

removeRttListener

public void removeRttListener(NetworkQualityRttListener listener)

اگر قبلاً شنونده‌ای از زمان‌های رفت و برگشت با addRttListener ثبت شده باشد، آن را حذف می‌کند. این تابع باید پس از افزودن NetworkQualityRttListener فراخوانی شود تا دریافت مشاهدات متوقف شود.

پارامترها
NetworkQualityRttListener listener

شنونده‌ی زمان‌های رفت و برگشت.

removeThroughputListener

public void removeThroughputListener(NetworkQualityThroughputListener listener)

یک شنونده از throughput را حذف می‌کند. این تابع باید پس از اضافه شدن یک NetworkQualityThroughputListener به همراه addThroughputListener فراخوانی شود تا دریافت مشاهدات متوقف شود.

پارامترها
NetworkQualityThroughputListener listener

شنونده‌ی توان عملیاتی.

خاموشی

public void shutdown()

اگر هیچ درخواست فعالی وجود نداشته باشد، CronetEngine خاموش می‌کند، در غیر این صورت یک استثنا ایجاد می‌کند.

نمی‌توان آن را روی نخ شبکه فراخوانی کرد - نخی که Cronet روی آن Executor را فراخوانی می‌کند (که با نخی که Executor فراخوانی‌های برگشتی را روی آن فراخوانی می‌کند متفاوت است). ممکن است تا زمانی که تمام منابع CronetEngine پاک‌سازی نشده باشند، مسدود شود.

شروعNetLogToDisk

public void startNetLogToDisk(String dirPath, boolean logAll, int maxSize)

ثبت وقایع NetLog را در یک دایرکتوری مشخص با اندازه محدود آغاز می‌کند. NetLog شامل رویدادهایی خواهد بود که توسط همه CronetEngineهای فعال منتشر می‌شوند. NetLog برای اشکال‌زدایی مفید است. پس از توقف ثبت وقایع stopNetLog ، داده‌ها در netlog.json در dirPath نوشته می‌شوند. در صورت قطع ثبت وقایع، می‌توانید فایل‌های موجود در زیرشاخه .inprogress را با استفاده از دستور زیر به صورت دستی ادغام کنید: https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py. گزارش وقایع را می‌توان با استفاده از مرورگر کروم و با پیمایش به chrome://net-internals/#import مشاهده کرد.

پارامترها
String dirPath

دایرکتوری که فایل netlog.json در آن ایجاد خواهد شد. dirPath باید از قبل وجود داشته باشد. فایل‌های NetLog نباید در دایرکتوری وجود داشته باشند. اگر به طور فعال در حال ثبت وقایع باشید، این متد نادیده گرفته می‌شود.

boolean logAll

برای گنجاندن رویدادهای اساسی، کوکی‌های کاربر، اطلاعات احراز هویت و تمام بایت‌های منتقل‌شده در گزارش، true انتخاب کنید. این گزینه ریسک حریم خصوصی را به همراه دارد، زیرا اطلاعات احراز هویت کاربر را افشا می‌کند و فقط باید با رضایت کاربر و در شرایطی که گزارش عمومی نخواهد بود، استفاده شود. false را انتخاب کنید تا فقط رویدادهای اساسی را شامل شود.

int maxSize

حداکثر فضای کل دیسک بر حسب بایت که باید توسط NetLog استفاده شود. فضای دیسک استفاده شده واقعی ممکن است کمی از این حد فراتر رود.

شروعNetLogToFile

public void startNetLogToFile(String fileName, boolean logAll)

ثبت وقایع NetLog در یک فایل را آغاز می‌کند. NetLog شامل رویدادهایی خواهد بود که توسط همه CronetEngineهای فعال منتشر می‌شوند. NetLog برای اشکال‌زدایی مفید است. این فایل را می‌توان با استفاده از یک مرورگر کروم که به آدرس chrome://net-internals/#import می‌رود، مشاهده کرد.

پارامترها
String fileName

مسیر کامل فایل. نباید خالی باشد. اگر فایل وجود داشته باشد، قبل از شروع کوتاه می‌شود. اگر به طور فعال در حال ثبت وقایع باشد، این روش نادیده گرفته می‌شود.

boolean logAll

برای گنجاندن رویدادهای اساسی، کوکی‌های کاربر، اطلاعات احراز هویت و تمام بایت‌های منتقل‌شده در گزارش، true انتخاب کنید. این گزینه ریسک حریم خصوصی را به همراه دارد، زیرا اطلاعات احراز هویت کاربر را افشا می‌کند و فقط باید با رضایت کاربر و در شرایطی که گزارش عمومی نخواهد بود، استفاده شود. false را انتخاب کنید تا فقط رویدادهای اساسی را شامل شود.

stopNetLog

public void stopNetLog()

ثبت وقایع NetLog را متوقف کرده و فایل را روی دیسک خالی می‌کند. اگر جلسه ثبت وقایع در حال انجام نباشد، این فراخوانی نادیده گرفته می‌شود.

روش‌های محافظت‌شده

ایجادجریان دوجهته

protected ExperimentalBidirectionalStream createBidirectionalStream(
    String url,
    BidirectionalStream.Callback callback,
    Executor executor,
    String httpMethod,
    List<Map.Entry<StringString>> requestHeaders,
    @CronetEngineBase.StreamPriority int priority,
    boolean delayRequestHeadersUntilFirstFlush,
    Collection<Object> connectionAnnotations,
    boolean trafficStatsTagSet,
    int trafficStatsTag,
    boolean trafficStatsUidSet,
    int trafficStatsUid,
    long networkHandle
)