Интерфейс HttpResponse.PushPromiseHandler<T>
- Параметры типа:
-
T- тип тела ответа на запрос с обещанием
- Вложенный интерфейс:
- HttpResponse<T>
public static interface HttpResponse.PushPromiseHandler<T>
Обработчик обещаний.
Обещание — это синтетический запрос, отправляемый сервером HTTP/2 при получении исходного запроса клиента. Сервер, возможно, проверив исходный запрос, определил, что клиенту, скорее всего, потребуется обещанный ресурс, и поэтому отправляет синтетический запрос в виде обещания клиенту. Клиент может принять или отклонить запрос-обещание.
Запрос с обещанием может быть получен до того момента, когда тело ответа на исходный запрос клиента будет полностью получено. Однако доставка ответа с обещанием не согласована с доставкой ответа на исходный запрос клиента.
- С:
- 11
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
applyPushPromise(HttpRequest initiatingRequest,
HttpRequest pushPromiseRequest,
Function<HttpResponse.BodyHandler<T>,CompletableFuture<HttpResponse<T>>> acceptor) |
Уведомление о входящем запросе с обещанием. |
static <T> HttpResponse.PushPromiseHandler<T> |
of(Function<HttpRequest,HttpResponse.BodyHandler<T>> pushPromiseHandler,
ConcurrentMap<HttpRequest,CompletableFuture<HttpResponse<T>>> pushPromisesMap) |
Возвращает обработчик обещаний, который накапливает обещания и их ответы в заданной карте. |
Методы
applyPushPromise
void applyPushPromise(HttpRequest initiatingRequest,
HttpRequest pushPromiseRequest,
Function<HttpResponse.BodyHandler<T>,CompletableFuture<HttpResponse<T>>> acceptor)
Уведомление о входящем запросе с обещанием.
Этот метод вызывается один раз для каждого полученного обещания, до момента, когда тело ответа на исходный запрос клиента будет полностью получено.
Обещание принимается, вызвав переданную функцию acceptor. Функция acceptor должна принять непустой BodyHandler, который будет использоваться для обработки тела ответа обещания. Функция-акцептор вернёт
CompletableFuture, который завершит работу с ответом обещания.
Если функция acceptor не вызвана успешно, то обещание отклоняется. Функция acceptor будет выбрасывать исключение IllegalStateException при вызове более одного раза.
- Параметры:
-
initiatingRequest- исходный запрос клиента -
pushPromiseRequest- синтетический запрос с обещанием -
acceptor- функция-акцептор, которая должна быть успешно вызвана для принятия обещания
of
static <T> HttpResponse.PushPromiseHandler<T> of(Function<HttpRequest,HttpResponse.BodyHandler<T>> pushPromiseHandler,
ConcurrentMap<HttpRequest,CompletableFuture<HttpResponse<T>>> pushPromisesMap)
Возвращает обработчик обещаний, который накапливает обещания и их ответы в заданной карте.
В заданную карту добавляются записи для каждого принятого обещания. Ключом записи является запрос с обещанием, а значением — CompletableFuture, который завершает работу с ответом, соответствующим запросу с обещанием. Запрос с обещанием отклоняется/отменяется, если в карте уже есть запись, ключ которой equal ему. Запрос с обещанием отклоняется/отменяется, если у него нет того же происхождения, что и у исходного запроса.
Записи добавляются в заданную карту как можно скорее после получения и принятия обещания. Таким образом, код, использующий такую карту как кэш, может определить, было ли обещание выдано сервером, и избежать, возможно, ненужных запросов.
Доставка ответа с обещанием не согласована с доставкой ответа на исходный запрос клиента. Однако, когда тело ответа на исходный запрос клиента будет полностью получено, гарантируется, что карта будет полностью заполнена, то есть больше записей не будет добавлено. Индивидуальные CompletableFutures в карте могут или не могут быть уже завершены на этом этапе.
- Параметры типа:
-
T- тип тела ответа на запрос с обещанием - Параметры:
-
pushPromiseHandler- обработчик тела для обещаний -
pushPromisesMap- карта для накопления обещаний - Возвращает:
- обработчик обещаний
© 1993, 2020, 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://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpResponse.PushPromiseHandler.html