Spec-Zone.ru › OpenJDK 24

Интерфейс HttpResponse.PushPromiseHandler<T>

Параметры типа:
T - тип тела ответа push-обещания
Вложенный интерфейс:
HttpResponse<T>
public static interface HttpResponse.PushPromiseHandler<T>
Обработчик push-обещаний.

Push-обещание — это синтетический запрос, отправленный сервером HTTP/2 при получении начального запроса от клиента. Сервер определил, возможно, проанализировав начальный запрос, что клиенту, скорее всего, потребуется запрошенная ресурс, и поэтому отправляет синтетический запрос-обещание клиенту. Клиент может принять или отклонить запрос push-обещания.

Запрос push-обещания может быть получен до момента полного получения тела ответа на начальный запрос от клиента. Однако доставка ответа на push-обещание не согласована с доставкой ответа на начальный запрос от клиента.

С:
11

Краткое описание методов

Модификатор и тип Метод Описание
void applyPushPromise(HttpRequest initiatingRequest, HttpRequest pushPromiseRequest, Function<HttpResponse.BodyHandler<T>, CompletableFuture<HttpResponse<T>>> acceptor)
Уведомление о входящем push-обещании.
static <T> HttpResponse.PushPromiseHandler<T> of(Function<HttpRequest, HttpResponse.BodyHandler<T>> pushPromiseHandler, ConcurrentMap<HttpRequest, CompletableFuture<HttpResponse<T>>> pushPromisesMap)
Возвращает обработчик push-обещаний, который накапливает push-обещания и их ответы в заданную карту.

Подробное описание методов

applyPushPromise

void applyPushPromise(HttpRequest initiatingRequest, HttpRequest pushPromiseRequest, Function<HttpResponse.BodyHandler<T>, CompletableFuture<HttpResponse<T>>> acceptor)
Уведомление о входящем push-обещании.

Этот метод вызывается один раз для каждого полученного push-обещания до момента полного получения тела ответа на начальный запрос от клиента.

Push-обещание принимается путем вызова переданной acceptor функции. Функция acceptor должна принять непустой BodyHandler, который будет использоваться для обработки тела ответа обещания. Функция акцептора вернет CompletableFuture, которая завершится с ответом обещания.

Если функция acceptor не будет успешно вызвана, то push-обещание будет отклонено. Функция acceptor будет выбрасывать IllegalStateException, если вызвана более одного раза.

Параметры:
initiatingRequest - начальный запрос от клиента
pushPromiseRequest - синтетический запрос push
acceptor - функция акцептора, которая должна быть успешно вызвана для принятия push-обещания

of

static <T> HttpResponse.PushPromiseHandler<T> of(Function<HttpRequest, HttpResponse.BodyHandler<T>> pushPromiseHandler, ConcurrentMap<HttpRequest, CompletableFuture<HttpResponse<T>>> pushPromisesMap)
Возвращает обработчик push-обещаний, который накапливает push-обещания и их ответы в заданную карту.

Элементы добавляются в заданную карту для каждого принятого push-обещания. Ключ элемента — push-запрос, а значение — CompletableFuture, которая завершается с ответом, соответствующим push-запросу ключа. Push-запрос отклоняется/отменяется, если в карте уже есть элемент, ключ которого равен ему. Push-запрос отклоняется/отменяется, если он не имеет того же источника, что и его инициирующий запрос.

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

Доставка ответа на push-обещание не согласована с доставкой ответа на начальный запрос от клиента. Однако, когда тело ответа на начальный запрос от клиента будет полностью получено, карта гарантированно будет полностью заполнена, то есть больше элементов не будет добавлено. Отдельные CompletableFutures в карте могут или не могут быть уже завершены на этом этапе.

Параметры типа:
T - тип тела ответа push-обещания
Параметры:
pushPromiseHandler - обработчик тела для push-обещаний
pushPromisesMap - карта для накопления push-обещаний
Возвращает:
обработчик push-обещаний

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.net.http/java/net/http/HttpResponse.PushPromiseHandler.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API