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

class JavaCronetEngine : CronetEngineBase


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

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

خلاصه

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

کارکردهای عمومی

Unit

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

Unit

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

Unit

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

Unit
bindToNetwork (networkHandle: Long )

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

Unit
configureNetworkQualityEstimatorForTesting (
useLocalHostRequests: Boolean ,
useSmallerResponses: Boolean ,
disableOfflineCheck: Boolean
)

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

ExperimentalUrlRequest !
createRequest (
url: String !,
callback: UrlRequest.Callback !,
executor: Executor !,
priority: Int ,
connectionAnnotations: ( Mutable ) Collection < Any !>!,
disableCache: Boolean ,
disableConnectionMigration: Boolean ,
allowDirectExecutor: Boolean ,
trafficStatsTagSet: Boolean ,
trafficStatsTag: Int ,
trafficStatsUidSet: Boolean ,
trafficStatsUid: Int ,
requestFinishedListener: RequestFinishedInfo.Listener !,
idempotency: Int ,
networkHandle: Long ,
method: String !,
requestHeaders: ArrayList <( Mutable ) Map.Entry < String !, String !>!>!,
uploadDataProvider: UploadDataProvider !,
uploadDataProviderExecutor: Executor !,
sharedDictionaryHash: ByteArray !,
sharedDictionary: ByteBuffer !,
sharedDictionaryId: String
)
URLStreamHandlerFactory !

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

Int

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

Int

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

Int

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

ByteArray < Byte >!

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

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

Int

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

Int

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

String !
URLConnection !

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

URLConnection !
openConnection (url: URL !, proxy: Proxy !)

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

Unit

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

Unit

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

Unit

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

Unit

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

Unit
startNetLogToDisk (dirPath: String !, logAll: Boolean , maxSize: Int )

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

Unit
startNetLogToFile (fileName: String !, logAll: Boolean )

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

Unit

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

توابع محافظت‌شده

ExperimentalBidirectionalStream !
createBidirectionalStream (
url: String !,
callback: BidirectionalStream.Callback !,
executor: Executor !,
httpMethod: String !,
requestHeaders: ( Mutable ) List <( Mutable ) Map.Entry < String !, String !>!>!,
@ CronetEngineBase.StreamPriority priority: Int ,
delayRequestHeadersUntilFirstFlush: Boolean ,
connectionAnnotations: ( Mutable ) Collection < Any !>!,
trafficStatsTagSet: Boolean ,
trafficStatsTag: Int ,
trafficStatsUidSet: Boolean ,
trafficStatsUid: Int ,
networkHandle: Long
)

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

از org.chromium.net.CronetEngine
const Int

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

از org.chromium.net.impl.CronetEngineBase

توابع ارثی

از org.chromium.net.impl.CronetEngineBase
ExperimentalUrlRequest.Builder !
newUrlRequestBuilder (
url: String !,
callback: UrlRequest.Callback !,
executor: Executor !
)

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

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

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

JavaCronetEngine(builder: CronetEngineBuilderImpl!)

کارکردهای عمومی

addRequestFinishedListener

fun addRequestFinishedListener(listener: RequestFinishedInfo.Listener!): Unit

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

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

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

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

addRttListener

fun addRttListener(listener: NetworkQualityRttListener!): Unit

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

پارامترها
listener: NetworkQualityRttListener !

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

addThroughputListener

fun addThroughputListener(listener: NetworkQualityThroughputListener!): Unit

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

پارامترها
listener: NetworkQualityThroughputListener !

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

bindToNetwork

fun bindToNetwork(networkHandle: Long): Unit

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

پارامترها
networkHandle: Long

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

پیکربندی NetworkQualityEstimatorForTesting

fun configureNetworkQualityEstimatorForTesting(
    useLocalHostRequests: Boolean,
    useSmallerResponses: Boolean,
    disableOfflineCheck: Boolean
): Unit

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

پارامترها
useLocalHostRequests: Boolean

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

useSmallerResponses: Boolean

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

disableOfflineCheck: Boolean

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

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

fun createRequest(
    url: String!,
    callback: UrlRequest.Callback!,
    executor: Executor!,
    priority: Int,
    connectionAnnotations: (Mutable)Collection<Any!>!,
    disableCache: Boolean,
    disableConnectionMigration: Boolean,
    allowDirectExecutor: Boolean,
    trafficStatsTagSet: Boolean,
    trafficStatsTag: Int,
    trafficStatsUidSet: Boolean,
    trafficStatsUid: Int,
    requestFinishedListener: RequestFinishedInfo.Listener!,
    idempotency: Int,
    networkHandle: Long,
    method: String!,
    requestHeaders: ArrayList<(Mutable)Map.Entry<String!, String!>!>!,
    uploadDataProvider: UploadDataProvider!,
    uploadDataProviderExecutor: Executor!,
    sharedDictionaryHash: ByteArray!,
    sharedDictionary: ByteBuffer!,
    sharedDictionaryId: String
): ExperimentalUrlRequest!

تابع createURLStreamHandlerFactory

fun createURLStreamHandlerFactory(): URLStreamHandlerFactory!

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

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

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

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

بازگشت‌ها
URLStreamHandlerFactory !

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

getActiveRequestCount

fun getActiveRequestCount(): Int

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

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

دریافت DownstreamThroughputKbps

fun getDownstreamThroughputKbps(): Int

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

بازگشت‌ها
Int

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

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

fun getEffectiveConnectionType(): Int

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

بازگشت‌ها
Int

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

getGlobalMetricsDeltas

fun getGlobalMetricsDeltas(): ByteArray<Byte>!

دریافتHttpRttMs

fun getHttpRttMs(): Int

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

بازگشت‌ها
Int

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

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

fun getTransportRttMs(): Int

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

بازگشت‌ها
Int

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

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

fun getVersionString(): String!
بازگشت‌ها
String !

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

اتصال باز

fun openConnection(url: URL!): URLConnection!

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

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

پارامترها
url: URL !

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

بازگشت‌ها
URLConnection !

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

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

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

اتصال باز

fun openConnection(url: URL!, proxy: Proxy!): URLConnection!

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

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

پارامترها
url: URL !

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

proxy: Proxy !

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

بازگشت‌ها
URLConnection !

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

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

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

removeRequestFinishedListener

fun removeRequestFinishedListener(listener: RequestFinishedInfo.Listener!): Unit

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

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

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

removeRttListener

fun removeRttListener(listener: NetworkQualityRttListener!): Unit

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

پارامترها
listener: NetworkQualityRttListener !

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

removeThroughputListener

fun removeThroughputListener(listener: NetworkQualityThroughputListener!): Unit

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

پارامترها
listener: NetworkQualityThroughputListener !

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

خاموشی

fun shutdown(): Unit

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

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

شروعNetLogToDisk

fun startNetLogToDisk(dirPath: String!, logAll: Boolean, maxSize: Int): Unit

ثبت وقایع 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 مشاهده کرد.

پارامترها
dirPath: String !

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

logAll: Boolean

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

maxSize: Int

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

شروعNetLogToFile

fun startNetLogToFile(fileName: String!, logAll: Boolean): Unit

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

پارامترها
fileName: String !

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

logAll: Boolean

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

stopNetLog

fun stopNetLog(): Unit

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

توابع محافظت‌شده

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

protected fun createBidirectionalStream(
    url: String!,
    callback: BidirectionalStream.Callback!,
    executor: Executor!,
    httpMethod: String!,
    requestHeaders: (Mutable)List<(Mutable)Map.Entry<String!, String!>!>!,
    @CronetEngineBase.StreamPriority priority: Int,
    delayRequestHeadersUntilFirstFlush: Boolean,
    connectionAnnotations: (Mutable)Collection<Any!>!,
    trafficStatsTagSet: Boolean,
    trafficStatsTag: Int,
    trafficStatsUidSet: Boolean,
    trafficStatsUid: Int,
    networkHandle: Long
): ExperimentalBidirectionalStream!