/** * Creates a new failed HTTP response. */ static HttpResponse ofFailure(Throwable cause) { final HttpResponseWriter res = streaming(); res.close(cause); return res; }
/** * Handles an {@link HttpMethod#OPTIONS OPTIONS} request. * This method sends a {@link HttpStatus#METHOD_NOT_ALLOWED 405 Method Not Allowed} response by default. */ protected HttpResponse doOptions(ServiceRequestContext ctx, HttpRequest req) throws Exception { final HttpResponseWriter res = HttpResponse.streaming(); doOptions(ctx, req, res); return res; }
/** * Handles a {@link HttpMethod#HEAD HEAD} request. * This method sends a {@link HttpStatus#METHOD_NOT_ALLOWED 405 Method Not Allowed} response by default. */ protected HttpResponse doHead(ServiceRequestContext ctx, HttpRequest req) throws Exception { final HttpResponseWriter res = HttpResponse.streaming(); doHead(ctx, req, res); return res; }
/** * Handles a {@link HttpMethod#GET GET} request. * This method sends a {@link HttpStatus#METHOD_NOT_ALLOWED 405 Method Not Allowed} response by default. */ protected HttpResponse doGet(ServiceRequestContext ctx, HttpRequest req) throws Exception { final HttpResponseWriter res = HttpResponse.streaming(); doGet(ctx, req, res); return res; }
/** * Handles a {@link HttpMethod#POST POST} request. * This method sends a {@link HttpStatus#METHOD_NOT_ALLOWED 405 Method Not Allowed} response by default. */ protected HttpResponse doPost(ServiceRequestContext ctx, HttpRequest req) throws Exception { final HttpResponseWriter res = HttpResponse.streaming(); doPost(ctx, req, res); return res; }
/** * Handles a {@link HttpMethod#PUT PUT} request. * This method sends a {@link HttpStatus#METHOD_NOT_ALLOWED 405 Method Not Allowed} response by default. */ protected HttpResponse doPut(ServiceRequestContext ctx, HttpRequest req) throws Exception { final HttpResponseWriter res = HttpResponse.streaming(); doPut(ctx, req, res); return res; }
/** * Handles a {@link HttpMethod#TRACE TRACE} request. * This method sends a {@link HttpStatus#METHOD_NOT_ALLOWED 405 Method Not Allowed} response by default. */ protected HttpResponse doTrace(ServiceRequestContext ctx, HttpRequest req) throws Exception { final HttpResponseWriter res = HttpResponse.streaming(); doTrace(ctx, req, res); return res; }
/** * Handles a {@link HttpMethod#PATCH PATCH} request. * This method sends a {@link HttpStatus#METHOD_NOT_ALLOWED 405 Method Not Allowed} response by default. */ protected HttpResponse doPatch(ServiceRequestContext ctx, HttpRequest req) throws Exception { final HttpResponseWriter res = HttpResponse.streaming(); doPatch(ctx, req, res); return res; }
/** * Handles a {@link HttpMethod#DELETE DELETE} request. * This method sends a {@link HttpStatus#METHOD_NOT_ALLOWED 405 Method Not Allowed} response by default. */ protected HttpResponse doDelete(ServiceRequestContext ctx, HttpRequest req) throws Exception { final HttpResponseWriter res = HttpResponse.streaming(); doDelete(ctx, req, res); return res; }
/** * Returns a new {@link HttpResponseWriter} which sends a streaming response from the specified * {@link Publisher}. * * @param publisher publishes objects * @param headers to be written to the returned {@link HttpResponseWriter} * @param trailingHeaders to be written to the returned {@link HttpResponseWriter} * @param contentConverter converts the published objects into streaming contents of the response */ public static <T> HttpResponseWriter streamingFrom(Publisher<T> publisher, HttpHeaders headers, HttpHeaders trailingHeaders, Function<T, HttpData> contentConverter) { final HttpResponseWriter writer = HttpResponse.streaming(); publisher.subscribe(new StreamingSubscriber<>(writer, headers, trailingHeaders, contentConverter)); return writer; }
requireNonNull(executor, "executor"); final HttpResponseWriter writer = HttpResponse.streaming(); executor.execute(() -> { try {
@Override protected final HttpResponse doRead(HttpHeaders headers, long length, Executor fileReadExecutor, ByteBufAllocator alloc) throws IOException { final T in = newStream(); if (in == null) { return null; } boolean submitted = false; try { final HttpResponseWriter res = HttpResponse.streaming(); res.write(headers); fileReadExecutor.execute(() -> doRead(res, in, 0, length, fileReadExecutor, alloc)); submitted = true; return res; } finally { if (!submitted) { close(in); } } }
private static HttpResponseWriter aggregateFrom(CompletableFuture<?> future, HttpHeaders headers, HttpHeaders trailingHeaders, Function<Object, HttpData> contentConverter) { final HttpResponseWriter writer = HttpResponse.streaming(); future.handle((result, cause) -> { if (cause != null) { writer.close(cause); return null; } try { final HttpData content = contentConverter.apply(result); writer.write(headers); writer.write(content); if (!trailingHeaders.isEmpty()) { writer.write(trailingHeaders); } writer.close(); } catch (Exception e) { writer.close(e); } return null; }); return writer; }
/** * Creates a new HTTP response of the specified {@link HttpStatus} and closes the stream if the * {@link HttpStatusClass} is not {@linkplain HttpStatusClass#INFORMATIONAL informational} (1xx). */ static HttpResponse of(HttpStatus status) { requireNonNull(status, "status"); if (status.codeClass() == HttpStatusClass.INFORMATIONAL) { final HttpResponseWriter res = streaming(); res.write(HttpHeaders.of(status)); return res; } else if (isContentAlwaysEmpty(status)) { return new OneElementFixedHttpResponse(HttpHeaders.of(status)); } else { return of(status, MediaType.PLAIN_TEXT_UTF_8, status.toHttpData()); } }
final HttpResponseWriter res = HttpResponse.streaming(); req.aggregate().handle((aReq, cause) -> { try {
assert connector != null; final HttpResponseWriter res = HttpResponse.streaming();
@Override protected void configure(ServerBuilder sb) { sb.service("/trailers", ((ctx, req) -> { HttpResponseWriter writer = HttpResponse.streaming(); HttpHeaders headers = HttpHeaders.of(HttpStatus.OK); assertThat(headers.isEndOfStream()).isFalse(); HttpHeaders trailers = new DefaultHttpHeaders(true, 1, true) .set(HttpHeaderNames.of("armeria-message"), "error"); assertThat(trailers.isEndOfStream()).isTrue(); writer.write(headers); writer.write(trailers); writer.close(); return writer; })); sb.service("/trailers-only", ((ctx, req) -> { HttpResponseWriter writer = HttpResponse.streaming(); HttpHeaders trailers = new DefaultHttpHeaders(true, 1, true) .status(HttpStatus.OK) .set(HttpHeaderNames.of("armeria-message"), "error"); assertThat(trailers.isEndOfStream()).isTrue(); writer.write(trailers); writer.close(); return writer; })); sb.decorator(LoggingService.newDecorator()); } };
ctx.logBuilder().deferResponseContent(); final HttpResponseWriter res = HttpResponse.streaming(); final ArmeriaServerCall<?, ?> call = startCall( methodName, method, ctx, req.headers(), res, serializationFormat);
ctx.logBuilder().deferResponseContent(); final HttpResponseWriter res = HttpResponse.streaming(); final ArmeriaServerCall<?, ?> call = startCall( methodName, method, ctx, req.headers(), res, serializationFormat);