JavaCroneTEngine

public final class JavaCronetEngine extends CronetEngineBase


java.net.HttpURLConnection поддерживает CronetEngine.

Не поддерживает netlogs, измерение передаваемых данных, bidistream, кэширование или приоритет.

Краткое содержание

Государственные строители

Общедоступные методы

void

Регистрирует обработчик событий, который вызывается после завершения каждого запроса с информацией о запросе.

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 (в миллисекундах), вычисленную с помощью алгоритма оценки качества сети.

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 .

Государственные строители

JavaCroneTEngine

public JavaCronetEngine(CronetEngineBuilderImpl builder)

Общедоступные методы

addRequestFinishedListener

public void addRequestFinishedListener(RequestFinishedInfo.Listener listener)

Регистрирует обработчик событий, который вызывается после завершения каждого запроса с информацией о запросе.

Слушатель вызывается для объекта java.util.concurrent.Executor , предоставленного слушателем.

Параметры
RequestFinishedInfo.Listener listener

слушатель завершенных запросов.

addRttListener

public void addRttListener(NetworkQualityRttListener listener)

Регистрирует обработчик событий, который вызывается всякий раз, когда оценщик качества сети фиксирует время кругового пути. Этот обработчик должен вызываться после enableNetworkQualityEstimator , в противном случае — генерировать исключение. Время кругового пути может записываться на различных уровнях сетевого стека, включая TCP, QUIC и уровень запроса URL. Обработчик событий вызывается для объекта java.util.concurrent.Executor , переданного в enableNetworkQualityEstimator .

Параметры
NetworkQualityRttListener listener

слушатель, получающий информацию о времени в пути туда и обратно.

addThroughputListener

public void addThroughputListener(NetworkQualityThroughputListener listener)

Регистрирует слушатель, который вызывается всякий раз, когда оценщик качества сети фиксирует выборочное измерение пропускной способности. Этот вызов должен быть выполнен после enableNetworkQualityEstimator . Наблюдения за пропускной способностью вычисляются путем измерения количества байтов, прочитанных через активный сетевой интерфейс в моменты, когда получен хотя бы один ответ на URL-адрес. Слушатель вызывается для объекта java.util.concurrent.Executor , переданного в enableNetworkQualityEstimator .

Параметры
NetworkQualityThroughputListener listener

слушатель пропускной способности.

bindToNetwork

public void bindToNetwork(long networkHandle)

Привязывает движок к указанному сетевому дескриптору. Все запросы, созданные через этот движок, будут использовать сеть, связанную с этим дескриптором. Если эта сеть отключается, все запросы завершатся с ошибкой; точная ошибка будет зависеть от стадии обработки запроса в момент отключения сети. Сетевые дескрипторы можно получить с помощью Network#getNetworkHandle . Доступно только начиная с Android Marshmallow.

Параметры
long networkHandle

Сетевой дескриптор, к которому будет привязан движок. Укажите UNBIND_NETWORK_HANDLE , чтобы отменить привязку.

configureNetworkQualityEtimatorForTesting

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

Настраивает средство оценки качества сети для тестирования. Этот вызов необходимо выполнить до добавления слушателей времени кругового пути и пропускной способности, а также после включения средства оценки качества сети.

Параметры
boolean useLocalHostRequests

Включать запросы к localhost в оценки.

boolean useSmallerResponses

Учитывайте небольшие отклики при оценке пропускной способности.

boolean disableOfflineCheck

Если установлено значение true, проверка устройства на автономное состояние отключается при вычислении фактического типа подключения или при записи настроек.

создатьЗапрос

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 таким образом, по умолчанию для всех запросов, создаваемых через openConnection, будет использоваться этот CronetEngine.

Cronet не использует некоторые функции HTTP, предоставляемые системой:

  • HTTP-кэш устанавливается с помощью HttpResponseCache.install()
  • метод HTTP-аутентификации, установленный с помощью setDefault
  • хранилище HTTP-cookie, установленное с помощью setDefault

Хотя Cronet поддерживает и поощряет запросы с использованием протокола HTTPS, Cronet не предоставляет поддержку API HttpsURLConnection . Отсутствие поддержки также включает в себя невозможность использования некоторых функций HTTPS, предоставляемых системой:

Возвраты
URLStreamHandlerFactory

Экземпляр URLStreamHandlerFactory , реализованный в этом CronetEngine.

getActiveRequestCount

public int getActiveRequestCount()

Возвращает количество активных запросов.

Запрос становится "активным" в методе UrlRequest.start(), если этот метод не вызывает исключение. Он становится неактивным, когда все коллбэки возвращают управление и в будущем невозможно запустить дополнительные коллбэки. На практике это означает, что запрос становится неактивным после того, как метод onSucceeded/onCanceled/onFailed вернет управление и все обработчики завершения запроса вернут управление. Для получения дополнительной информации см. жизненный цикл запросов Cronet .

getDownstreamThroughputKbps

public int getDownstreamThroughputKbps()

Возвращает оценку пропускной способности нисходящего потока (в килобитах в секунду), вычисленную оценщиком качества сети. Если значение недоступно, установите значение CONNECTION_METRIC_UNKNOWN . Этот метод необходимо вызывать после enableNetworkQualityEstimator , в противном случае будет сгенерировано исключение.

Возвраты
int

Оценка пропускной способности нижестоящего узла в килобитах в секунду.

getEffectiveConnectionType

public int getEffectiveConnectionType()

Возвращает оценку эффективного типа соединения, вычисленную с помощью оценщика качества сети. Вызовите enableNetworkQualityEstimator , чтобы начать вычисление этого значения.

Возвраты
int

Предполагаемый тип соединения. Возвращаемое значение — одно из EFFECTIVE_CONNECTION_TYPE_* .

getGlobalMetricsDeltas

public byte[] getGlobalMetricsDeltas()

getHttpRttMs

public int getHttpRttMs()

Возвращает оценку времени кругового обхода HTTP (в миллисекундах), вычисленную оценщиком качества сети. Если значение недоступно, установите значение CONNECTION_METRIC_UNKNOWN . Этот метод необходимо вызывать после enableNetworkQualityEstimator , в противном случае будет сгенерировано исключение.

Возвраты
int

Оценка времени кругового обхода HTTP-трафика в миллисекундах.

getTransportRttMs

public int getTransportRttMs()

Возвращает оценку времени кругового обхода (в миллисекундах), вычисленную оценщиком качества сети. Если значение недоступно, установите значение CONNECTION_METRIC_UNKNOWN . Этот метод необходимо вызывать после enableNetworkQualityEstimator , в противном случае будет сгенерировано исключение.

Возвраты
int

Оценка времени кругового пути (RTT) в миллисекундах.

getVersionString

public String getVersionString()
Возвраты
String

Строка с указанием версии движка, удобочитаемая для человека.

открытое соединение

public URLConnection openConnection(URL url)

Устанавливает новое соединение с ресурсом, указанным в URL url .

Примечание: реализация java.net.HttpURLConnection в Cronet имеет определенные ограничения, подробности см. createURLStreamHandlerFactory .

Параметры
URL 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

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)

Удаляет слушатель пропускной способности. Этот метод следует вызывать после добавления NetworkQualityThroughputListener с помощью addThroughputListener , чтобы прекратить получение наблюдений.

Параметры
NetworkQualityThroughputListener listener

слушатель пропускной способности.

неисправность

public void shutdown()

При отсутствии активных запросов CronetEngine отключает его, в противном случае генерирует исключение.

Вызов невозможен в сетевом потоке — в потоке, в котором Cronet вызывает Executor (который отличается от потока, в котором Executor вызывает обратные вызовы). Может блокировать выполнение до тех пор, пока не будут очищены все ресурсы CronetEngine .

startNetLogToDisk

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

Запускает запись логов NetLog в указанный каталог с ограниченным размером. NetLog будет содержать события, генерируемые всеми работающими CronetEngines. NetLog полезен для отладки. После остановки записи логов stopNetLog данные будут записаны в файл netlog.json в dirPath . Если запись логов прервана, вы можете вручную объединить файлы, находящиеся в подкаталоге .inprogress, используя: https://chromium.googlesource.com/chromium/src/+/main/net/tools/stitch_net_log_files.py. Журнал можно просмотреть в браузере Chrome, перейдя по адресу chrome://net-internals/#import.

Параметры
String dirPath

Каталог, в котором будет создан файл netlog.json. Параметр dirPath должен уже существовать. Файлы NetLog не должны существовать в этом каталоге. Если ведется активное логирование, этот параметр игнорируется.

boolean logAll

true означает включение в журнал основных событий, пользовательских файлов cookie, учетных данных и всех переданных байтов. Этот параметр представляет собой риск для конфиденциальности, поскольку раскрывает учетные данные пользователя, и должен использоваться только с согласия пользователя и в ситуациях, когда журнал не будет общедоступным. Значение false означает включение только основных событий.

int maxSize

Максимальный общий объем дискового пространства в байтах, который должен использоваться NetLog. Фактическое использование дискового пространства может незначительно превышать этот лимит.

startNetLogToFile

public void startNetLogToFile(String fileName, boolean logAll)

Запускает запись логов NetLog в файл. Файл NetLog будет содержать события, генерируемые всеми работающими устройствами CronetEngines. Файл NetLog полезен для отладки. Файл можно просмотреть в браузере Chrome, перейдя по адресу chrome://net-internals/#import

Параметры
String fileName

Полный путь к файлу. Он не должен быть пустым. Если файл существует, он будет усечен перед началом работы. Если ведется активное логирование, этот метод игнорируется.

boolean logAll

true означает включение в журнал основных событий, пользовательских файлов cookie, учетных данных и всех переданных байтов. Этот параметр представляет собой риск для конфиденциальности, поскольку раскрывает учетные данные пользователя, и должен использоваться только с согласия пользователя и в ситуациях, когда журнал не будет общедоступным. Значение 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
)