Interface RequestOptionsSetters

All Known Subinterfaces:
RequestPreparationSetters
All Known Implementing Classes:
BlockingWebClientRequestPreparation, FutureTransformingRequestPreparation, RequestOptionsBuilder, RestClientPreparation, TransformingRequestPreparation, WebClientRequestPreparation

@UnstableApi public interface RequestOptionsSetters
Provides the setters for building RequestOptions.
  • Method Details

    • responseTimeout

      RequestOptionsSetters responseTimeout(Duration responseTimeout)
      Schedules the response timeout that is triggered when the Response is not fully received within the specified Duration since the Response started or Request was fully sent. Duration.ZERO disables the limit.
    • responseTimeoutMillis

      RequestOptionsSetters responseTimeoutMillis(long responseTimeoutMillis)
      Schedules the response timeout that is triggered when the Response is not fully received within the specified responseTimeoutMillis since the Response started or Request was fully sent. 0 disables the limit.
    • writeTimeout

      RequestOptionsSetters writeTimeout(Duration writeTimeout)
      Sets the amount of time allowed until the initial write attempt of the current Request succeeds. Duration.ZERO disables the limit.
    • writeTimeoutMillis

      RequestOptionsSetters writeTimeoutMillis(long writeTimeoutMillis)
      Sets the amount of time allowed until the initial write attempt of the current Request succeeds. 0 disables the limit.
    • maxResponseLength

      RequestOptionsSetters maxResponseLength(long maxResponseLength)
      Sets the maximum allowed length of a server response in bytes. 0 disables the limit.
    • requestAutoAbortDelay

      RequestOptionsSetters requestAutoAbortDelay(Duration delay)
      Sets the amount of time to wait before aborting an HttpRequest when its corresponding HttpResponse is complete. This may be useful when you want to send additional data even after the response is complete. Specify Duration.ZERO to abort the HttpRequest immediately. Any negative value will not abort the request automatically. There is no delay by default.
    • requestAutoAbortDelayMillis

      RequestOptionsSetters requestAutoAbortDelayMillis(long delayMillis)
      Sets the amount of time in millis to wait before aborting an HttpRequest when its corresponding HttpResponse is complete. This may be useful when you want to send additional data even after the response is complete. Specify 0 to abort the HttpRequest immediately. Any negative value will not abort the request automatically. There is no delay by default.
    • attr

      <V> RequestOptionsSetters attr(io.netty.util.AttributeKey<V> key, @Nullable V value)
      Associates the specified value with the given AttributeKey in this request. If this context previously contained a mapping for the AttributeKey, the old value is replaced by the specified value.
    • exchangeType

      @UnstableApi RequestOptionsSetters exchangeType(ExchangeType exchangeType)
      Sets the ExchangeType that determines whether to stream an HttpRequest or HttpResponse. Note that an HttpRequest will be aggregated before being written if ExchangeType.UNARY or ExchangeType.RESPONSE_STREAMING is set. If unspecified, the Clients try to infer a proper ExchangeType depending on the content type of a request and a response. Here are examples:

      WebClient

      
       WebClient client = WebClient.of("https://armeria.dev");
      
       try (ClientRequestContextCaptor captor = Clients.newContextCaptor()) {
           client.prepare()
                 .post("/api/v1/items")
                 .contentJson(new Item(...)) // A non-streaming request type.
                 .asString()                 // A non-streaming response type.
                 .execute();
           assert captor.get().exchangeType() == ExchangeType.UNARY;
       }
      
       try (ClientRequestContextCaptor captor = Clients.newContextCaptor()) {
           client.get("/api/v1/items")   // A non-streaming request type.
                 .aggregate();           // A return type is not specified; Assuming that response streaming
                                         // is enabled.
           assert captor.get().exchangeType() == ExchangeType.RESPONSE_STREAMING;
       }
      
       try (ClientRequestContextCaptor captor = Clients.newContextCaptor()) {
           client.prepare()
                 .post("/api/v1/items")
                 .content(MediaType.JSON_LINES, StreamMessage.of(...)) // A streaming request type.
                 .asFile(Path.get("/path/to/destination"))             // A streaming response type.
                 .execute();
           assert captor.get().exchangeType() == ExchangeType.BIDI_STREAMING;
       }
       

      BlockingWebClient

      Since a request and a response of BlockingWebClient are fully aggregated, ExchangeType.UNARY is only supported.

      
       try (ClientRequestContextCaptor captor = Clients.newContextCaptor()) {
           AggregatedHttpResponse response = client.blocking().get("/api/v1/items");
           assert captor.get().exchangeType() == ExchangeType.UNARY;
       }
       

      gRPC clients

      An ExchangeType is automatically inferred from the io.grpc.MethodDescriptor.MethodType.

      
       try (ClientRequestContextCaptor captor = Clients.newContextCaptor()) {
           Response response = grpcClient.unaryCall(...);
           assert captor.get().exchangeType() == ExchangeType.UNARY;
       }
       

      Thrift clients

      Thrift protocols do not support streaming. ExchangeType.UNARY is only supported.