کرونت انجین

abstract class CronetEngine

زیرکلاس‌های مستقیم شناخته‌شده CronetEngineBase
زیرکلاس‌های غیرمستقیم شناخته‌شده JavaCronetEngine
JavaCronetEngine

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


یک موتور برای پردازش UrlRequest ها، که از بهترین پشته HTTP موجود در پلتفرم فعلی استفاده می‌کند. یک نمونه از این کلاس را می‌توان با استفاده از Builder ایجاد کرد.

خلاصه

انواع تو در تو

یک سازنده برای CronetEngine که امکان پیکربندی زمان اجرا CronetEngine را فراهم می‌کند.

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

ثابت‌ها

const Int

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

const Int

مقدار یک معیار اتصال ناشناخته است.

const Int

تخمین نوع اتصال مؤثر 2G است.

const Int

تخمین نوع اتصال مؤثر 3G است.

const Int

تخمین نوع اتصال مؤثر، 4G است.

const Int

دستگاه آفلاین است.

const Int

تخمین نوع اتصال مؤثر، 2G کند است.

const Int

تخمین نوع اتصال مؤثر ناشناخته است.

const Long

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

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

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

Unit

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

Unit

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

Unit

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

Unit
bindToNetwork (networkHandle: Long )

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

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

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

abstract URLStreamHandlerFactory !

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

Int

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

Int

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

Int

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

abstract ByteArray < Byte >!

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

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

Int

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

Int

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

abstract String !
abstract UrlRequest.Builder !
newUrlRequestBuilder (
url: String !,
callback: UrlRequest.Callback !,
executor: Executor !
)

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

abstract URLConnection !

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

Unit

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

Unit

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

Unit

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

abstract Unit

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

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

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

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

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

abstract Unit

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

ثابت‌ها

تعداد درخواست‌های فعال (ACTIVE_REQUEST_COUNT_UNKNOWN)

const val ACTIVE_REQUEST_COUNT_UNKNOWN = -1: Int

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

اتصال_متریک_نامشخص

const val CONNECTION_METRIC_UNKNOWN = -1: Int

مقدار یک معیار اتصال ناشناخته است.

نوع اتصال موثر ۲G

const val EFFECTIVE_CONNECTION_TYPE_2G = 3: Int

تخمین نوع اتصال مؤثر 2G است.

همچنین ببینید
getEffectiveConnectionType

نوع_اتصال_موثر_3G

const val EFFECTIVE_CONNECTION_TYPE_3G = 4: Int

تخمین نوع اتصال مؤثر 3G است.

همچنین ببینید
getEffectiveConnectionType

نوع_اتصال_موثر_4G

const val EFFECTIVE_CONNECTION_TYPE_4G = 5: Int

تخمین نوع اتصال مؤثر، 4G است.

همچنین ببینید
getEffectiveConnectionType

نوع_ارتباط_موثر_آفلاین

const val EFFECTIVE_CONNECTION_TYPE_OFFLINE = 1: Int

دستگاه آفلاین است.

همچنین ببینید
getEffectiveConnectionType

نوع_ارتباط_موثر_کند_2G

const val EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 2: Int

تخمین نوع اتصال مؤثر، 2G کند است.

همچنین ببینید
getEffectiveConnectionType

نوع_ارتباط_موثر_نامشخص

const val EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0: Int

تخمین نوع اتصال مؤثر ناشناخته است.

همچنین ببینید
getEffectiveConnectionType

اتصال مجدد شبکه

const val UNBIND_NETWORK_HANDLE = -1: Long

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

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

کرونت انجین

CronetEngine()

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

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

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

تابع createURLStreamHandlerFactory

abstract 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

abstract 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 انتقالی بر حسب میلی‌ثانیه.

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

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

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

سازنده درخواست آدرس جدید

abstract fun newUrlRequestBuilder(
    url: String!,
    callback: UrlRequest.Callback!,
    executor: Executor!
): UrlRequest.Builder!

یک سازنده برای UrlRequest ایجاد می‌کند. تمام فراخوانی‌های برگشتی برای اشیاء UrlRequest تولید شده در نخ‌های executor فراخوانی می‌شوند. executor نباید وظایفی را روی نخی که execute را فراخوانی می‌کند اجرا کند تا از مسدود شدن عملیات شبکه و ایجاد استثنا در هنگام خاموش شدن جلوگیری شود.

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

آدرس اینترنتی (URL) برای درخواست‌های تولید شده.

callback: UrlRequest.Callback !

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

executor: Executor !

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

اتصال باز

abstract fun openConnection(url: URL!): URLConnection!

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

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

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

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

بازگشت‌ها
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 !

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

خاموشی

abstract 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

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

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

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

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

logAll: Boolean

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

stopNetLog

abstract fun stopNetLog(): Unit

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