Class RateLimitStrategy.RequestsPerTimeUnit.Builder

java.lang.Object
com.google.protobuf.AbstractMessageLite.Builder
com.google.protobuf.AbstractMessage.Builder<RateLimitStrategy.RequestsPerTimeUnit.Builder>
com.google.protobuf.GeneratedMessage.Builder<RateLimitStrategy.RequestsPerTimeUnit.Builder>
io.envoyproxy.envoy.type.v3.RateLimitStrategy.RequestsPerTimeUnit.Builder
All Implemented Interfaces:
com.google.protobuf.Message.Builder, com.google.protobuf.MessageLite.Builder, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, RateLimitStrategy.RequestsPerTimeUnitOrBuilder, Cloneable
Enclosing class:
RateLimitStrategy.RequestsPerTimeUnit

public static final class RateLimitStrategy.RequestsPerTimeUnit.Builder extends com.google.protobuf.GeneratedMessage.Builder<RateLimitStrategy.RequestsPerTimeUnit.Builder> implements RateLimitStrategy.RequestsPerTimeUnitOrBuilder
 Best-effort limit of the number of requests per time unit.

 Allows to specify the desired requests per second (RPS, QPS), requests per minute (QPM, RPM),
 etc., without specifying a rate limiting algorithm implementation.

 ``RequestsPerTimeUnit`` strategy does not demand any specific rate limiting algorithm to be
 used (in contrast to the :ref:`TokenBucket <envoy_v3_api_msg_type.v3.TokenBucket>`,
 for example). It implies that the implementation details of rate limiting algorithm are
 irrelevant as long as the configured number of "requests per time unit" is achieved.

 Note that the ``TokenBucket`` is still a valid implementation of the ``RequestsPerTimeUnit``
 strategy, and may be chosen to enforce the rate limit. However, there's no guarantee it will be
 the ``TokenBucket`` in particular, and not the Leaky Bucket, the Sliding Window, or any other
 rate limiting algorithm that fulfills the requirements.
 
Protobuf type envoy.type.v3.RateLimitStrategy.RequestsPerTimeUnit
  • Field Details

    • bitField0_

      private int bitField0_
    • requestsPerTimeUnit_

      private long requestsPerTimeUnit_
    • timeUnit_

      private int timeUnit_
  • Constructor Details

    • Builder

      private Builder()
    • Builder

      private Builder(com.google.protobuf.AbstractMessage.BuilderParent parent)
  • Method Details

    • getDescriptor

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
    • internalGetFieldAccessorTable

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable()
      Specified by:
      internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessage.Builder<RateLimitStrategy.RequestsPerTimeUnit.Builder>
    • clear

      Specified by:
      clear in interface com.google.protobuf.Message.Builder
      Specified by:
      clear in interface com.google.protobuf.MessageLite.Builder
      Overrides:
      clear in class com.google.protobuf.GeneratedMessage.Builder<RateLimitStrategy.RequestsPerTimeUnit.Builder>
    • getDescriptorForType

      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType()
      Specified by:
      getDescriptorForType in interface com.google.protobuf.Message.Builder
      Specified by:
      getDescriptorForType in interface com.google.protobuf.MessageOrBuilder
      Overrides:
      getDescriptorForType in class com.google.protobuf.GeneratedMessage.Builder<RateLimitStrategy.RequestsPerTimeUnit.Builder>
    • getDefaultInstanceForType

      public RateLimitStrategy.RequestsPerTimeUnit getDefaultInstanceForType()
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder
    • build

      Specified by:
      build in interface com.google.protobuf.Message.Builder
      Specified by:
      build in interface com.google.protobuf.MessageLite.Builder
    • buildPartial

      Specified by:
      buildPartial in interface com.google.protobuf.Message.Builder
      Specified by:
      buildPartial in interface com.google.protobuf.MessageLite.Builder
    • buildPartial0

      private void buildPartial0(RateLimitStrategy.RequestsPerTimeUnit result)
    • mergeFrom

      public RateLimitStrategy.RequestsPerTimeUnit.Builder mergeFrom(com.google.protobuf.Message other)
      Specified by:
      mergeFrom in interface com.google.protobuf.Message.Builder
      Overrides:
      mergeFrom in class com.google.protobuf.AbstractMessage.Builder<RateLimitStrategy.RequestsPerTimeUnit.Builder>
    • mergeFrom

    • isInitialized

      public final boolean isInitialized()
      Specified by:
      isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
      Overrides:
      isInitialized in class com.google.protobuf.GeneratedMessage.Builder<RateLimitStrategy.RequestsPerTimeUnit.Builder>
    • mergeFrom

      public RateLimitStrategy.RequestsPerTimeUnit.Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Specified by:
      mergeFrom in interface com.google.protobuf.Message.Builder
      Specified by:
      mergeFrom in interface com.google.protobuf.MessageLite.Builder
      Overrides:
      mergeFrom in class com.google.protobuf.AbstractMessage.Builder<RateLimitStrategy.RequestsPerTimeUnit.Builder>
      Throws:
      IOException
    • getRequestsPerTimeUnit

      public long getRequestsPerTimeUnit()
       The desired number of requests per :ref:`time_unit
       <envoy_v3_api_field_type.v3.RateLimitStrategy.RequestsPerTimeUnit.time_unit>` to allow.
       If set to ``0``, deny all (equivalent to ``BlanketRule.DENY_ALL``).
      
       .. note::
       Note that the algorithm implementation determines the course of action for the requests
       over the limit. As long as the ``requests_per_time_unit`` converges on the desired value,
       it's allowed to treat this field as a soft-limit: allow bursts, redistribute the allowance
       over time, etc.
       
      uint64 requests_per_time_unit = 1;
      Specified by:
      getRequestsPerTimeUnit in interface RateLimitStrategy.RequestsPerTimeUnitOrBuilder
      Returns:
      The requestsPerTimeUnit.
    • setRequestsPerTimeUnit

      public RateLimitStrategy.RequestsPerTimeUnit.Builder setRequestsPerTimeUnit(long value)
       The desired number of requests per :ref:`time_unit
       <envoy_v3_api_field_type.v3.RateLimitStrategy.RequestsPerTimeUnit.time_unit>` to allow.
       If set to ``0``, deny all (equivalent to ``BlanketRule.DENY_ALL``).
      
       .. note::
       Note that the algorithm implementation determines the course of action for the requests
       over the limit. As long as the ``requests_per_time_unit`` converges on the desired value,
       it's allowed to treat this field as a soft-limit: allow bursts, redistribute the allowance
       over time, etc.
       
      uint64 requests_per_time_unit = 1;
      Parameters:
      value - The requestsPerTimeUnit to set.
      Returns:
      This builder for chaining.
    • clearRequestsPerTimeUnit

      public RateLimitStrategy.RequestsPerTimeUnit.Builder clearRequestsPerTimeUnit()
       The desired number of requests per :ref:`time_unit
       <envoy_v3_api_field_type.v3.RateLimitStrategy.RequestsPerTimeUnit.time_unit>` to allow.
       If set to ``0``, deny all (equivalent to ``BlanketRule.DENY_ALL``).
      
       .. note::
       Note that the algorithm implementation determines the course of action for the requests
       over the limit. As long as the ``requests_per_time_unit`` converges on the desired value,
       it's allowed to treat this field as a soft-limit: allow bursts, redistribute the allowance
       over time, etc.
       
      uint64 requests_per_time_unit = 1;
      Returns:
      This builder for chaining.
    • getTimeUnitValue

      public int getTimeUnitValue()
       The unit of time. Ignored when :ref:`requests_per_time_unit
       <envoy_v3_api_field_type.v3.RateLimitStrategy.RequestsPerTimeUnit.requests_per_time_unit>`
       is ``0`` (deny all).
       
      .envoy.type.v3.RateLimitUnit time_unit = 2 [(.validate.rules) = { ... }
      Specified by:
      getTimeUnitValue in interface RateLimitStrategy.RequestsPerTimeUnitOrBuilder
      Returns:
      The enum numeric value on the wire for timeUnit.
    • setTimeUnitValue

      public RateLimitStrategy.RequestsPerTimeUnit.Builder setTimeUnitValue(int value)
       The unit of time. Ignored when :ref:`requests_per_time_unit
       <envoy_v3_api_field_type.v3.RateLimitStrategy.RequestsPerTimeUnit.requests_per_time_unit>`
       is ``0`` (deny all).
       
      .envoy.type.v3.RateLimitUnit time_unit = 2 [(.validate.rules) = { ... }
      Parameters:
      value - The enum numeric value on the wire for timeUnit to set.
      Returns:
      This builder for chaining.
    • getTimeUnit

      public RateLimitUnit getTimeUnit()
       The unit of time. Ignored when :ref:`requests_per_time_unit
       <envoy_v3_api_field_type.v3.RateLimitStrategy.RequestsPerTimeUnit.requests_per_time_unit>`
       is ``0`` (deny all).
       
      .envoy.type.v3.RateLimitUnit time_unit = 2 [(.validate.rules) = { ... }
      Specified by:
      getTimeUnit in interface RateLimitStrategy.RequestsPerTimeUnitOrBuilder
      Returns:
      The timeUnit.
    • setTimeUnit

       The unit of time. Ignored when :ref:`requests_per_time_unit
       <envoy_v3_api_field_type.v3.RateLimitStrategy.RequestsPerTimeUnit.requests_per_time_unit>`
       is ``0`` (deny all).
       
      .envoy.type.v3.RateLimitUnit time_unit = 2 [(.validate.rules) = { ... }
      Parameters:
      value - The timeUnit to set.
      Returns:
      This builder for chaining.
    • clearTimeUnit

       The unit of time. Ignored when :ref:`requests_per_time_unit
       <envoy_v3_api_field_type.v3.RateLimitStrategy.RequestsPerTimeUnit.requests_per_time_unit>`
       is ``0`` (deny all).
       
      .envoy.type.v3.RateLimitUnit time_unit = 2 [(.validate.rules) = { ... }
      Returns:
      This builder for chaining.