java.lang.Object
com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessage
com.google.protobuf.GeneratedMessageV3
io.envoyproxy.envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor
All Implemented Interfaces:
com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, ExternalProcessorOrBuilder, Serializable

public final class ExternalProcessor extends com.google.protobuf.GeneratedMessageV3 implements ExternalProcessorOrBuilder
 The filter communicates with an external gRPC service called an "external processor"
 that can do a variety of things with the request and response:

 * Access and modify the HTTP headers on the request, response, or both
 * Access and modify the HTTP request and response bodies
 * Access and modify the dynamic stream metadata
 * Immediately send an HTTP response downstream and terminate other processing

 The filter communicates with the server using a gRPC bidirectional stream. After the initial
 request, the external server is in control over what additional data is sent to it
 and how it should be processed.

 By implementing the protocol specified by the stream, the external server can choose:

 * Whether it receives the response message at all
 * Whether it receives the message body at all, in separate chunks, or as a single buffer
 * Whether subsequent HTTP requests are transmitted synchronously or whether they are
   sent asynchronously.
 * To modify request or response trailers if they already exist

 The filter supports up to six different processing steps. Each is represented by
 a gRPC stream message that is sent to the external processor. For each message, the
 processor must send a matching response.

 * Request headers: Contains the headers from the original HTTP request.
 * Request body: Delivered if they are present and sent in a single message if
   the BUFFERED or BUFFERED_PARTIAL mode is chosen, in multiple messages if the
   STREAMED mode is chosen, and not at all otherwise.
 * Request trailers: Delivered if they are present and if the trailer mode is set
   to SEND.
 * Response headers: Contains the headers from the HTTP response. Keep in mind
   that if the upstream system sends them before processing the request body that
   this message may arrive before the complete body.
 * Response body: Sent according to the processing mode like the request body.
 * Response trailers: Delivered according to the processing mode like the
   request trailers.

 By default, the processor sends only the request and response headers messages.
 This may be changed to include any of the six steps by changing the processing_mode
 setting of the filter configuration, or by setting the mode_override of any response
 from the external processor. The latter is only enabled if allow_mode_override is
 set to true. This way, a processor may, for example, use information
 in the request header to determine whether the message body must be examined, or whether
 the proxy should simply stream it straight through.

 All of this together allows a server to process the filter traffic in fairly
 sophisticated ways. For example:

 * A server may choose to examine all or part of the HTTP message bodies depending
   on the content of the headers.
 * A server may choose to immediately reject some messages based on their HTTP
   headers (or other dynamic metadata) and more carefully examine others.
 * A server may asynchronously monitor traffic coming through the filter by inspecting
   headers, bodies, or both, and then decide to switch to a synchronous processing
   mode, either permanently or temporarily.

 The protocol itself is based on a bidirectional gRPC stream. Envoy will send the
 server
 :ref:`ProcessingRequest <envoy_v3_api_msg_service.ext_proc.v3.ProcessingRequest>`
 messages, and the server must reply with
 :ref:`ProcessingResponse <envoy_v3_api_msg_service.ext_proc.v3.ProcessingResponse>`.

 Stats about each gRPC call are recorded in a :ref:`dynamic filter state
 <arch_overview_advanced_filter_state_sharing>` object in a namespace matching the filter
 name.

 [#next-free-field: 24]
 
Protobuf type envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor
See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final class 
    The filter communicates with an external gRPC service called an "external processor" that can do a variety of things with the request and response: * Access and modify the HTTP headers on the request, response, or both * Access and modify the HTTP request and response bodies * Access and modify the dynamic stream metadata * Immediately send an HTTP response downstream and terminate other processing The filter communicates with the server using a gRPC bidirectional stream.
    static enum 
    Describes the route cache action to be taken when an external processor response is received in response to request headers.

    Nested classes/interfaces inherited from class com.google.protobuf.GeneratedMessageV3

    com.google.protobuf.GeneratedMessageV3.BuilderParent, com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<MessageT extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage<MessageT>,BuilderT extends com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<MessageT,BuilderT>>, com.google.protobuf.GeneratedMessageV3.ExtendableMessage<MessageT extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage<MessageT>>, com.google.protobuf.GeneratedMessageV3.ExtendableMessageOrBuilder<MessageT extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage<MessageT>>, com.google.protobuf.GeneratedMessageV3.FieldAccessorTable, com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter

    Nested classes/interfaces inherited from class com.google.protobuf.AbstractMessageLite

    com.google.protobuf.AbstractMessageLite.InternalOneOfEnum
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     
    static final int
     

    Fields inherited from class com.google.protobuf.GeneratedMessageV3

    alwaysUseFieldBuilders, unknownFields

    Fields inherited from class com.google.protobuf.AbstractMessage

    memoizedSize

    Fields inherited from class com.google.protobuf.AbstractMessageLite

    memoizedHashCode
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
     
    When :ref:`allow_mode_override <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and ``allowed_override_modes`` is configured, the filter config :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>` can only be overridden by the response message from the external processing server iff the :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by the ``allowed_override_modes`` allow-list below.
    int
    When :ref:`allow_mode_override <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and ``allowed_override_modes`` is configured, the filter config :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>` can only be overridden by the response message from the external processing server iff the :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by the ``allowed_override_modes`` allow-list below.
    When :ref:`allow_mode_override <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and ``allowed_override_modes`` is configured, the filter config :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>` can only be overridden by the response message from the external processing server iff the :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by the ``allowed_override_modes`` allow-list below.
    When :ref:`allow_mode_override <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and ``allowed_override_modes`` is configured, the filter config :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>` can only be overridden by the response message from the external processing server iff the :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by the ``allowed_override_modes`` allow-list below.
    When :ref:`allow_mode_override <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and ``allowed_override_modes`` is configured, the filter config :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>` can only be overridden by the response message from the external processing server iff the :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by the ``allowed_override_modes`` allow-list below.
    boolean
    If ``allow_mode_override`` is set to true, the filter config :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>` can be overridden by the response message from the external processing server :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`.
     
     
    com.google.protobuf.Duration
    Specifies the deferred closure timeout for gRPC stream that connects to external processor.
    com.google.protobuf.DurationOrBuilder
    Specifies the deferred closure timeout for gRPC stream that connects to external processor.
    static final com.google.protobuf.Descriptors.Descriptor
     
    boolean
    Prevents clearing the route-cache when the :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>` field is set in an external processor response.
    boolean
    If set to true, ignore the :ref:`immediate_response <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.immediate_response>` message in an external processor response.
    boolean
    By default, if the gRPC stream cannot be established, or if it is closed prematurely with an error, the filter will fail.
    com.google.protobuf.Struct
    Additional metadata to be added to the filter state for logging purposes.
    com.google.protobuf.StructOrBuilder
    Additional metadata to be added to the filter state for logging purposes.
    Allow headers matching the ``forward_rules`` to be forwarded to the external processing server.
    Allow headers matching the ``forward_rules`` to be forwarded to the external processing server.
    Configuration for the gRPC service that the filter will communicate with.
    Configuration for the gRPC service that the filter will communicate with.
    Configuration for the HTTP service that the filter will communicate with.
    Configuration for the HTTP service that the filter will communicate with.
    com.google.protobuf.Duration
    Specify the upper bound of :ref:`override_message_timeout <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.override_message_timeout>` If not specified, by default it is 0, which will effectively disable the ``override_message_timeout`` API.
    com.google.protobuf.DurationOrBuilder
    Specify the upper bound of :ref:`override_message_timeout <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.override_message_timeout>` If not specified, by default it is 0, which will effectively disable the ``override_message_timeout`` API.
    com.google.protobuf.Duration
    Specifies the timeout for each individual message sent on the stream and when the filter is running in synchronous mode.
    com.google.protobuf.DurationOrBuilder
    Specifies the timeout for each individual message sent on the stream and when the filter is running in synchronous mode.
    Options related to the sending and receiving of dynamic metadata.
    Options related to the sending and receiving of dynamic metadata.
    Rules that determine what modifications an external processing server may make to message headers.
    Rules that determine what modifications an external processing server may make to message headers.
    boolean
    If true, send each part of the HTTP request or response specified by ProcessingMode without pausing on filter chain iteration.
    Decorator to introduce custom logic that runs after a message received from the External Processor is processed, but before continuing filter chain iteration. .. note:: Response processors are currently in alpha.
    Decorator to introduce custom logic that runs after a message received from the External Processor is processed, but before continuing filter chain iteration. .. note:: Response processors are currently in alpha.
    com.google.protobuf.Parser<ExternalProcessor>
     
    Specifies default options for how HTTP headers, trailers, and bodies are sent.
    Specifies default options for how HTTP headers, trailers, and bodies are sent.
    Envoy provides a number of :ref:`attributes <arch_overview_attributes>` for expressive policies.
    com.google.protobuf.ByteString
    Envoy provides a number of :ref:`attributes <arch_overview_attributes>` for expressive policies.
    int
    Envoy provides a number of :ref:`attributes <arch_overview_attributes>` for expressive policies.
    com.google.protobuf.ProtocolStringList
    Envoy provides a number of :ref:`attributes <arch_overview_attributes>` for expressive policies.
    Envoy provides a number of :ref:`attributes <arch_overview_attributes>` for expressive policies.
    com.google.protobuf.ByteString
    Envoy provides a number of :ref:`attributes <arch_overview_attributes>` for expressive policies.
    int
    Envoy provides a number of :ref:`attributes <arch_overview_attributes>` for expressive policies.
    com.google.protobuf.ProtocolStringList
    Envoy provides a number of :ref:`attributes <arch_overview_attributes>` for expressive policies.
    Specifies the action to be taken when an external processor response is received in response to request headers.
    int
    Specifies the action to be taken when an external processor response is received in response to request headers.
    boolean
    Send body to the side stream server once it arrives without waiting for the header response from that server.
    int
     
    Optional additional prefix to use when emitting statistics.
    com.google.protobuf.ByteString
    Optional additional prefix to use when emitting statistics.
    boolean
    Specifies the deferred closure timeout for gRPC stream that connects to external processor.
    boolean
    Additional metadata to be added to the filter state for logging purposes.
    boolean
    Allow headers matching the ``forward_rules`` to be forwarded to the external processing server.
    boolean
    Configuration for the gRPC service that the filter will communicate with.
    int
     
    boolean
    Configuration for the HTTP service that the filter will communicate with.
    boolean
    Specify the upper bound of :ref:`override_message_timeout <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.override_message_timeout>` If not specified, by default it is 0, which will effectively disable the ``override_message_timeout`` API.
    boolean
    Specifies the timeout for each individual message sent on the stream and when the filter is running in synchronous mode.
    boolean
    Options related to the sending and receiving of dynamic metadata.
    boolean
    Rules that determine what modifications an external processing server may make to message headers.
    boolean
    Decorator to introduce custom logic that runs after a message received from the External Processor is processed, but before continuing filter chain iteration. .. note:: Response processors are currently in alpha.
    boolean
    Specifies default options for how HTTP headers, trailers, and bodies are sent.
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
     
    final boolean
     
     
     
     
    newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
     
    protected Object
    newInstance(com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter unused)
     
     
    parseDelimitedFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
     
    parseFrom(byte[] data)
     
    parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
     
    parseFrom(com.google.protobuf.ByteString data)
     
    parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
     
    parseFrom(com.google.protobuf.CodedInputStream input)
     
    parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
     
     
    parseFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
     
     
    parseFrom(ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
     
    static com.google.protobuf.Parser<ExternalProcessor>
     
     
    void
    writeTo(com.google.protobuf.CodedOutputStream output)
     

    Methods inherited from class com.google.protobuf.GeneratedMessageV3

    canUseUnsafe, computeStringSize, computeStringSizeNoTag, emptyBooleanList, emptyDoubleList, emptyFloatList, emptyIntList, emptyList, emptyLongList, getAllFields, getDescriptorForType, getField, getOneofFieldDescriptor, getRepeatedField, getRepeatedFieldCount, getUnknownFields, hasField, hasOneof, internalGetMapField, internalGetMapFieldReflection, isStringEmpty, makeExtensionsImmutable, makeMutableCopy, makeMutableCopy, mergeFromAndMakeImmutableInternal, mutableCopy, mutableCopy, mutableCopy, mutableCopy, mutableCopy, newBooleanList, newBuilderForType, newDoubleList, newFloatList, newIntList, newLongList, parseDelimitedWithIOException, parseDelimitedWithIOException, parseUnknownField, parseUnknownFieldProto3, parseWithIOException, parseWithIOException, parseWithIOException, parseWithIOException, serializeBooleanMapTo, serializeIntegerMapTo, serializeLongMapTo, serializeStringMapTo, writeReplace, writeString, writeStringNoTag

    Methods inherited from class com.google.protobuf.AbstractMessage

    findInitializationErrors, getInitializationErrorString, hashBoolean, hashEnum, hashEnumList, hashFields, hashLong, toString

    Methods inherited from class com.google.protobuf.AbstractMessageLite

    addAll, addAll, checkByteStringIsUtf8, toByteArray, toByteString, writeDelimitedTo, writeTo

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface com.google.protobuf.MessageLite

    toByteArray, toByteString, writeDelimitedTo, writeTo

    Methods inherited from interface com.google.protobuf.MessageOrBuilder

    findInitializationErrors, getAllFields, getDescriptorForType, getField, getInitializationErrorString, getOneofFieldDescriptor, getRepeatedField, getRepeatedFieldCount, getUnknownFields, hasField, hasOneof
  • Field Details

    • GRPC_SERVICE_FIELD_NUMBER

      public static final int GRPC_SERVICE_FIELD_NUMBER
      See Also:
    • HTTP_SERVICE_FIELD_NUMBER

      public static final int HTTP_SERVICE_FIELD_NUMBER
      See Also:
    • FAILURE_MODE_ALLOW_FIELD_NUMBER

      public static final int FAILURE_MODE_ALLOW_FIELD_NUMBER
      See Also:
    • PROCESSING_MODE_FIELD_NUMBER

      public static final int PROCESSING_MODE_FIELD_NUMBER
      See Also:
    • REQUEST_ATTRIBUTES_FIELD_NUMBER

      public static final int REQUEST_ATTRIBUTES_FIELD_NUMBER
      See Also:
    • RESPONSE_ATTRIBUTES_FIELD_NUMBER

      public static final int RESPONSE_ATTRIBUTES_FIELD_NUMBER
      See Also:
    • MESSAGE_TIMEOUT_FIELD_NUMBER

      public static final int MESSAGE_TIMEOUT_FIELD_NUMBER
      See Also:
    • STAT_PREFIX_FIELD_NUMBER

      public static final int STAT_PREFIX_FIELD_NUMBER
      See Also:
    • MUTATION_RULES_FIELD_NUMBER

      public static final int MUTATION_RULES_FIELD_NUMBER
      See Also:
    • MAX_MESSAGE_TIMEOUT_FIELD_NUMBER

      public static final int MAX_MESSAGE_TIMEOUT_FIELD_NUMBER
      See Also:
    • FORWARD_RULES_FIELD_NUMBER

      public static final int FORWARD_RULES_FIELD_NUMBER
      See Also:
    • FILTER_METADATA_FIELD_NUMBER

      public static final int FILTER_METADATA_FIELD_NUMBER
      See Also:
    • ALLOW_MODE_OVERRIDE_FIELD_NUMBER

      public static final int ALLOW_MODE_OVERRIDE_FIELD_NUMBER
      See Also:
    • DISABLE_IMMEDIATE_RESPONSE_FIELD_NUMBER

      public static final int DISABLE_IMMEDIATE_RESPONSE_FIELD_NUMBER
      See Also:
    • METADATA_OPTIONS_FIELD_NUMBER

      public static final int METADATA_OPTIONS_FIELD_NUMBER
      See Also:
    • OBSERVABILITY_MODE_FIELD_NUMBER

      public static final int OBSERVABILITY_MODE_FIELD_NUMBER
      See Also:
    • DISABLE_CLEAR_ROUTE_CACHE_FIELD_NUMBER

      public static final int DISABLE_CLEAR_ROUTE_CACHE_FIELD_NUMBER
      See Also:
    • ROUTE_CACHE_ACTION_FIELD_NUMBER

      public static final int ROUTE_CACHE_ACTION_FIELD_NUMBER
      See Also:
    • DEFERRED_CLOSE_TIMEOUT_FIELD_NUMBER

      public static final int DEFERRED_CLOSE_TIMEOUT_FIELD_NUMBER
      See Also:
    • SEND_BODY_WITHOUT_WAITING_FOR_HEADER_RESPONSE_FIELD_NUMBER

      public static final int SEND_BODY_WITHOUT_WAITING_FOR_HEADER_RESPONSE_FIELD_NUMBER
      See Also:
    • ALLOWED_OVERRIDE_MODES_FIELD_NUMBER

      public static final int ALLOWED_OVERRIDE_MODES_FIELD_NUMBER
      See Also:
    • ON_PROCESSING_RESPONSE_FIELD_NUMBER

      public static final int ON_PROCESSING_RESPONSE_FIELD_NUMBER
      See Also:
  • Method Details

    • newInstance

      protected Object newInstance(com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter unused)
      Overrides:
      newInstance in class com.google.protobuf.GeneratedMessageV3
    • getDescriptor

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

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
      Specified by:
      internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessageV3
    • hasGrpcService

      public boolean hasGrpcService()
       Configuration for the gRPC service that the filter will communicate with.
       The filter supports both the "Envoy" and "Google" gRPC clients.
       Only one of ``grpc_service`` or ``http_service`` can be set.
       It is required that one of them must be set.
       
      .envoy.config.core.v3.GrpcService grpc_service = 1 [(.udpa.annotations.field_migrate) = { ... }
      Specified by:
      hasGrpcService in interface ExternalProcessorOrBuilder
      Returns:
      Whether the grpcService field is set.
    • getGrpcService

      public GrpcService getGrpcService()
       Configuration for the gRPC service that the filter will communicate with.
       The filter supports both the "Envoy" and "Google" gRPC clients.
       Only one of ``grpc_service`` or ``http_service`` can be set.
       It is required that one of them must be set.
       
      .envoy.config.core.v3.GrpcService grpc_service = 1 [(.udpa.annotations.field_migrate) = { ... }
      Specified by:
      getGrpcService in interface ExternalProcessorOrBuilder
      Returns:
      The grpcService.
    • getGrpcServiceOrBuilder

      public GrpcServiceOrBuilder getGrpcServiceOrBuilder()
       Configuration for the gRPC service that the filter will communicate with.
       The filter supports both the "Envoy" and "Google" gRPC clients.
       Only one of ``grpc_service`` or ``http_service`` can be set.
       It is required that one of them must be set.
       
      .envoy.config.core.v3.GrpcService grpc_service = 1 [(.udpa.annotations.field_migrate) = { ... }
      Specified by:
      getGrpcServiceOrBuilder in interface ExternalProcessorOrBuilder
    • hasHttpService

      public boolean hasHttpService()
       Configuration for the HTTP service that the filter will communicate with.
       Only one of ``http_service`` or
       :ref:`grpc_service <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.grpc_service>`.
       can be set. It is required that one of them must be set.
      
       If ``http_service`` is set, the
       :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
       can not be configured to send any body or trailers. i.e, http_service only supports
       sending request or response headers to the side stream server.
      
       With this configuration, Envoy behavior:
      
       1. The headers are first put in a proto message
       :ref:`ProcessingRequest <envoy_v3_api_msg_service.ext_proc.v3.ProcessingRequest>`.
      
       2. This proto message is then transcoded into a JSON text.
      
       3. Envoy then sends a HTTP POST message with content-type as "application/json",
       and this JSON text as body to the side stream server.
      
       After the side-stream receives this HTTP request message, it is expected to do as follows:
      
       1. It converts the body, which is a JSON string, into a ``ProcessingRequest``
       proto message to examine and mutate the headers.
      
       2. It then sets the mutated headers into a new proto message
       :ref:`ProcessingResponse <envoy_v3_api_msg_service.ext_proc.v3.ProcessingResponse>`.
      
       3. It converts ``ProcessingResponse`` proto message into a JSON text.
      
       4. It then sends a HTTP response back to Envoy with status code as "200",
       content-type as "application/json" and sets the JSON text as the body.
       
      .envoy.extensions.filters.http.ext_proc.v3.ExtProcHttpService http_service = 20 [(.udpa.annotations.field_migrate) = { ... }
      Specified by:
      hasHttpService in interface ExternalProcessorOrBuilder
      Returns:
      Whether the httpService field is set.
    • getHttpService

      public ExtProcHttpService getHttpService()
       Configuration for the HTTP service that the filter will communicate with.
       Only one of ``http_service`` or
       :ref:`grpc_service <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.grpc_service>`.
       can be set. It is required that one of them must be set.
      
       If ``http_service`` is set, the
       :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
       can not be configured to send any body or trailers. i.e, http_service only supports
       sending request or response headers to the side stream server.
      
       With this configuration, Envoy behavior:
      
       1. The headers are first put in a proto message
       :ref:`ProcessingRequest <envoy_v3_api_msg_service.ext_proc.v3.ProcessingRequest>`.
      
       2. This proto message is then transcoded into a JSON text.
      
       3. Envoy then sends a HTTP POST message with content-type as "application/json",
       and this JSON text as body to the side stream server.
      
       After the side-stream receives this HTTP request message, it is expected to do as follows:
      
       1. It converts the body, which is a JSON string, into a ``ProcessingRequest``
       proto message to examine and mutate the headers.
      
       2. It then sets the mutated headers into a new proto message
       :ref:`ProcessingResponse <envoy_v3_api_msg_service.ext_proc.v3.ProcessingResponse>`.
      
       3. It converts ``ProcessingResponse`` proto message into a JSON text.
      
       4. It then sends a HTTP response back to Envoy with status code as "200",
       content-type as "application/json" and sets the JSON text as the body.
       
      .envoy.extensions.filters.http.ext_proc.v3.ExtProcHttpService http_service = 20 [(.udpa.annotations.field_migrate) = { ... }
      Specified by:
      getHttpService in interface ExternalProcessorOrBuilder
      Returns:
      The httpService.
    • getHttpServiceOrBuilder

      public ExtProcHttpServiceOrBuilder getHttpServiceOrBuilder()
       Configuration for the HTTP service that the filter will communicate with.
       Only one of ``http_service`` or
       :ref:`grpc_service <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.grpc_service>`.
       can be set. It is required that one of them must be set.
      
       If ``http_service`` is set, the
       :ref:`processing_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
       can not be configured to send any body or trailers. i.e, http_service only supports
       sending request or response headers to the side stream server.
      
       With this configuration, Envoy behavior:
      
       1. The headers are first put in a proto message
       :ref:`ProcessingRequest <envoy_v3_api_msg_service.ext_proc.v3.ProcessingRequest>`.
      
       2. This proto message is then transcoded into a JSON text.
      
       3. Envoy then sends a HTTP POST message with content-type as "application/json",
       and this JSON text as body to the side stream server.
      
       After the side-stream receives this HTTP request message, it is expected to do as follows:
      
       1. It converts the body, which is a JSON string, into a ``ProcessingRequest``
       proto message to examine and mutate the headers.
      
       2. It then sets the mutated headers into a new proto message
       :ref:`ProcessingResponse <envoy_v3_api_msg_service.ext_proc.v3.ProcessingResponse>`.
      
       3. It converts ``ProcessingResponse`` proto message into a JSON text.
      
       4. It then sends a HTTP response back to Envoy with status code as "200",
       content-type as "application/json" and sets the JSON text as the body.
       
      .envoy.extensions.filters.http.ext_proc.v3.ExtProcHttpService http_service = 20 [(.udpa.annotations.field_migrate) = { ... }
      Specified by:
      getHttpServiceOrBuilder in interface ExternalProcessorOrBuilder
    • getFailureModeAllow

      public boolean getFailureModeAllow()
       By default, if the gRPC stream cannot be established, or if it is closed
       prematurely with an error, the filter will fail. Specifically, if the
       response headers have not yet been delivered, then it will return a 500
       error downstream. If they have been delivered, then instead the HTTP stream to the
       downstream client will be reset.
       With this parameter set to true, however, then if the gRPC stream is prematurely closed
       or could not be opened, processing continues without error.
       
      bool failure_mode_allow = 2;
      Specified by:
      getFailureModeAllow in interface ExternalProcessorOrBuilder
      Returns:
      The failureModeAllow.
    • hasProcessingMode

      public boolean hasProcessingMode()
       Specifies default options for how HTTP headers, trailers, and bodies are
       sent. See ProcessingMode for details.
       
      .envoy.extensions.filters.http.ext_proc.v3.ProcessingMode processing_mode = 3;
      Specified by:
      hasProcessingMode in interface ExternalProcessorOrBuilder
      Returns:
      Whether the processingMode field is set.
    • getProcessingMode

      public ProcessingMode getProcessingMode()
       Specifies default options for how HTTP headers, trailers, and bodies are
       sent. See ProcessingMode for details.
       
      .envoy.extensions.filters.http.ext_proc.v3.ProcessingMode processing_mode = 3;
      Specified by:
      getProcessingMode in interface ExternalProcessorOrBuilder
      Returns:
      The processingMode.
    • getProcessingModeOrBuilder

      public ProcessingModeOrBuilder getProcessingModeOrBuilder()
       Specifies default options for how HTTP headers, trailers, and bodies are
       sent. See ProcessingMode for details.
       
      .envoy.extensions.filters.http.ext_proc.v3.ProcessingMode processing_mode = 3;
      Specified by:
      getProcessingModeOrBuilder in interface ExternalProcessorOrBuilder
    • getRequestAttributesList

      public com.google.protobuf.ProtocolStringList getRequestAttributesList()
       Envoy provides a number of :ref:`attributes <arch_overview_attributes>`
       for expressive policies. Each attribute name provided in this field will be
       matched against that list and populated in the request_headers message.
       See the :ref:`attribute documentation <arch_overview_request_attributes>`
       for the list of supported attributes and their types.
       
      repeated string request_attributes = 5;
      Specified by:
      getRequestAttributesList in interface ExternalProcessorOrBuilder
      Returns:
      A list containing the requestAttributes.
    • getRequestAttributesCount

      public int getRequestAttributesCount()
       Envoy provides a number of :ref:`attributes <arch_overview_attributes>`
       for expressive policies. Each attribute name provided in this field will be
       matched against that list and populated in the request_headers message.
       See the :ref:`attribute documentation <arch_overview_request_attributes>`
       for the list of supported attributes and their types.
       
      repeated string request_attributes = 5;
      Specified by:
      getRequestAttributesCount in interface ExternalProcessorOrBuilder
      Returns:
      The count of requestAttributes.
    • getRequestAttributes

      public String getRequestAttributes(int index)
       Envoy provides a number of :ref:`attributes <arch_overview_attributes>`
       for expressive policies. Each attribute name provided in this field will be
       matched against that list and populated in the request_headers message.
       See the :ref:`attribute documentation <arch_overview_request_attributes>`
       for the list of supported attributes and their types.
       
      repeated string request_attributes = 5;
      Specified by:
      getRequestAttributes in interface ExternalProcessorOrBuilder
      Parameters:
      index - The index of the element to return.
      Returns:
      The requestAttributes at the given index.
    • getRequestAttributesBytes

      public com.google.protobuf.ByteString getRequestAttributesBytes(int index)
       Envoy provides a number of :ref:`attributes <arch_overview_attributes>`
       for expressive policies. Each attribute name provided in this field will be
       matched against that list and populated in the request_headers message.
       See the :ref:`attribute documentation <arch_overview_request_attributes>`
       for the list of supported attributes and their types.
       
      repeated string request_attributes = 5;
      Specified by:
      getRequestAttributesBytes in interface ExternalProcessorOrBuilder
      Parameters:
      index - The index of the value to return.
      Returns:
      The bytes of the requestAttributes at the given index.
    • getResponseAttributesList

      public com.google.protobuf.ProtocolStringList getResponseAttributesList()
       Envoy provides a number of :ref:`attributes <arch_overview_attributes>`
       for expressive policies. Each attribute name provided in this field will be
       matched against that list and populated in the response_headers message.
       See the :ref:`attribute documentation <arch_overview_attributes>`
       for the list of supported attributes and their types.
       
      repeated string response_attributes = 6;
      Specified by:
      getResponseAttributesList in interface ExternalProcessorOrBuilder
      Returns:
      A list containing the responseAttributes.
    • getResponseAttributesCount

      public int getResponseAttributesCount()
       Envoy provides a number of :ref:`attributes <arch_overview_attributes>`
       for expressive policies. Each attribute name provided in this field will be
       matched against that list and populated in the response_headers message.
       See the :ref:`attribute documentation <arch_overview_attributes>`
       for the list of supported attributes and their types.
       
      repeated string response_attributes = 6;
      Specified by:
      getResponseAttributesCount in interface ExternalProcessorOrBuilder
      Returns:
      The count of responseAttributes.
    • getResponseAttributes

      public String getResponseAttributes(int index)
       Envoy provides a number of :ref:`attributes <arch_overview_attributes>`
       for expressive policies. Each attribute name provided in this field will be
       matched against that list and populated in the response_headers message.
       See the :ref:`attribute documentation <arch_overview_attributes>`
       for the list of supported attributes and their types.
       
      repeated string response_attributes = 6;
      Specified by:
      getResponseAttributes in interface ExternalProcessorOrBuilder
      Parameters:
      index - The index of the element to return.
      Returns:
      The responseAttributes at the given index.
    • getResponseAttributesBytes

      public com.google.protobuf.ByteString getResponseAttributesBytes(int index)
       Envoy provides a number of :ref:`attributes <arch_overview_attributes>`
       for expressive policies. Each attribute name provided in this field will be
       matched against that list and populated in the response_headers message.
       See the :ref:`attribute documentation <arch_overview_attributes>`
       for the list of supported attributes and their types.
       
      repeated string response_attributes = 6;
      Specified by:
      getResponseAttributesBytes in interface ExternalProcessorOrBuilder
      Parameters:
      index - The index of the value to return.
      Returns:
      The bytes of the responseAttributes at the given index.
    • hasMessageTimeout

      public boolean hasMessageTimeout()
       Specifies the timeout for each individual message sent on the stream and
       when the filter is running in synchronous mode. Whenever the proxy sends
       a message on the stream that requires a response, it will reset this timer,
       and will stop processing and return an error (subject to the processing mode)
       if the timer expires before a matching response is received. There is no
       timeout when the filter is running in asynchronous mode. Zero is a valid
       config which means the timer will be triggered immediately. If not
       configured, default is 200 milliseconds.
       
      .google.protobuf.Duration message_timeout = 7 [(.validate.rules) = { ... }
      Specified by:
      hasMessageTimeout in interface ExternalProcessorOrBuilder
      Returns:
      Whether the messageTimeout field is set.
    • getMessageTimeout

      public com.google.protobuf.Duration getMessageTimeout()
       Specifies the timeout for each individual message sent on the stream and
       when the filter is running in synchronous mode. Whenever the proxy sends
       a message on the stream that requires a response, it will reset this timer,
       and will stop processing and return an error (subject to the processing mode)
       if the timer expires before a matching response is received. There is no
       timeout when the filter is running in asynchronous mode. Zero is a valid
       config which means the timer will be triggered immediately. If not
       configured, default is 200 milliseconds.
       
      .google.protobuf.Duration message_timeout = 7 [(.validate.rules) = { ... }
      Specified by:
      getMessageTimeout in interface ExternalProcessorOrBuilder
      Returns:
      The messageTimeout.
    • getMessageTimeoutOrBuilder

      public com.google.protobuf.DurationOrBuilder getMessageTimeoutOrBuilder()
       Specifies the timeout for each individual message sent on the stream and
       when the filter is running in synchronous mode. Whenever the proxy sends
       a message on the stream that requires a response, it will reset this timer,
       and will stop processing and return an error (subject to the processing mode)
       if the timer expires before a matching response is received. There is no
       timeout when the filter is running in asynchronous mode. Zero is a valid
       config which means the timer will be triggered immediately. If not
       configured, default is 200 milliseconds.
       
      .google.protobuf.Duration message_timeout = 7 [(.validate.rules) = { ... }
      Specified by:
      getMessageTimeoutOrBuilder in interface ExternalProcessorOrBuilder
    • getStatPrefix

      public String getStatPrefix()
       Optional additional prefix to use when emitting statistics. This allows to distinguish
       emitted statistics between configured *ext_proc* filters in an HTTP filter chain.
       
      string stat_prefix = 8;
      Specified by:
      getStatPrefix in interface ExternalProcessorOrBuilder
      Returns:
      The statPrefix.
    • getStatPrefixBytes

      public com.google.protobuf.ByteString getStatPrefixBytes()
       Optional additional prefix to use when emitting statistics. This allows to distinguish
       emitted statistics between configured *ext_proc* filters in an HTTP filter chain.
       
      string stat_prefix = 8;
      Specified by:
      getStatPrefixBytes in interface ExternalProcessorOrBuilder
      Returns:
      The bytes for statPrefix.
    • hasMutationRules

      public boolean hasMutationRules()
       Rules that determine what modifications an external processing server may
       make to message headers. If not set, all headers may be modified except
       for "host", ":authority", ":scheme", ":method", and headers that start
       with the header prefix set via
       :ref:`header_prefix <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.header_prefix>`
       (which is usually "x-envoy").
       Note that changing headers such as "host" or ":authority" may not in itself
       change Envoy's routing decision, as routes can be cached. To also force the
       route to be recomputed, set the
       :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>`
       field to true in the same response.
       
      .envoy.config.common.mutation_rules.v3.HeaderMutationRules mutation_rules = 9;
      Specified by:
      hasMutationRules in interface ExternalProcessorOrBuilder
      Returns:
      Whether the mutationRules field is set.
    • getMutationRules

      public HeaderMutationRules getMutationRules()
       Rules that determine what modifications an external processing server may
       make to message headers. If not set, all headers may be modified except
       for "host", ":authority", ":scheme", ":method", and headers that start
       with the header prefix set via
       :ref:`header_prefix <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.header_prefix>`
       (which is usually "x-envoy").
       Note that changing headers such as "host" or ":authority" may not in itself
       change Envoy's routing decision, as routes can be cached. To also force the
       route to be recomputed, set the
       :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>`
       field to true in the same response.
       
      .envoy.config.common.mutation_rules.v3.HeaderMutationRules mutation_rules = 9;
      Specified by:
      getMutationRules in interface ExternalProcessorOrBuilder
      Returns:
      The mutationRules.
    • getMutationRulesOrBuilder

      public HeaderMutationRulesOrBuilder getMutationRulesOrBuilder()
       Rules that determine what modifications an external processing server may
       make to message headers. If not set, all headers may be modified except
       for "host", ":authority", ":scheme", ":method", and headers that start
       with the header prefix set via
       :ref:`header_prefix <envoy_v3_api_field_config.bootstrap.v3.Bootstrap.header_prefix>`
       (which is usually "x-envoy").
       Note that changing headers such as "host" or ":authority" may not in itself
       change Envoy's routing decision, as routes can be cached. To also force the
       route to be recomputed, set the
       :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>`
       field to true in the same response.
       
      .envoy.config.common.mutation_rules.v3.HeaderMutationRules mutation_rules = 9;
      Specified by:
      getMutationRulesOrBuilder in interface ExternalProcessorOrBuilder
    • hasMaxMessageTimeout

      public boolean hasMaxMessageTimeout()
       Specify the upper bound of
       :ref:`override_message_timeout <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.override_message_timeout>`
       If not specified, by default it is 0, which will effectively disable the ``override_message_timeout`` API.
       
      .google.protobuf.Duration max_message_timeout = 10 [(.validate.rules) = { ... }
      Specified by:
      hasMaxMessageTimeout in interface ExternalProcessorOrBuilder
      Returns:
      Whether the maxMessageTimeout field is set.
    • getMaxMessageTimeout

      public com.google.protobuf.Duration getMaxMessageTimeout()
       Specify the upper bound of
       :ref:`override_message_timeout <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.override_message_timeout>`
       If not specified, by default it is 0, which will effectively disable the ``override_message_timeout`` API.
       
      .google.protobuf.Duration max_message_timeout = 10 [(.validate.rules) = { ... }
      Specified by:
      getMaxMessageTimeout in interface ExternalProcessorOrBuilder
      Returns:
      The maxMessageTimeout.
    • getMaxMessageTimeoutOrBuilder

      public com.google.protobuf.DurationOrBuilder getMaxMessageTimeoutOrBuilder()
       Specify the upper bound of
       :ref:`override_message_timeout <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.override_message_timeout>`
       If not specified, by default it is 0, which will effectively disable the ``override_message_timeout`` API.
       
      .google.protobuf.Duration max_message_timeout = 10 [(.validate.rules) = { ... }
      Specified by:
      getMaxMessageTimeoutOrBuilder in interface ExternalProcessorOrBuilder
    • hasForwardRules

      public boolean hasForwardRules()
       Allow headers matching the ``forward_rules`` to be forwarded to the external processing server.
       If not set, all headers are forwarded to the external processing server.
       
      .envoy.extensions.filters.http.ext_proc.v3.HeaderForwardingRules forward_rules = 12;
      Specified by:
      hasForwardRules in interface ExternalProcessorOrBuilder
      Returns:
      Whether the forwardRules field is set.
    • getForwardRules

      public HeaderForwardingRules getForwardRules()
       Allow headers matching the ``forward_rules`` to be forwarded to the external processing server.
       If not set, all headers are forwarded to the external processing server.
       
      .envoy.extensions.filters.http.ext_proc.v3.HeaderForwardingRules forward_rules = 12;
      Specified by:
      getForwardRules in interface ExternalProcessorOrBuilder
      Returns:
      The forwardRules.
    • getForwardRulesOrBuilder

      public HeaderForwardingRulesOrBuilder getForwardRulesOrBuilder()
       Allow headers matching the ``forward_rules`` to be forwarded to the external processing server.
       If not set, all headers are forwarded to the external processing server.
       
      .envoy.extensions.filters.http.ext_proc.v3.HeaderForwardingRules forward_rules = 12;
      Specified by:
      getForwardRulesOrBuilder in interface ExternalProcessorOrBuilder
    • hasFilterMetadata

      public boolean hasFilterMetadata()
       Additional metadata to be added to the filter state for logging purposes. The metadata
       will be added to StreamInfo's filter state under the namespace corresponding to the
       ext_proc filter name.
       
      .google.protobuf.Struct filter_metadata = 13;
      Specified by:
      hasFilterMetadata in interface ExternalProcessorOrBuilder
      Returns:
      Whether the filterMetadata field is set.
    • getFilterMetadata

      public com.google.protobuf.Struct getFilterMetadata()
       Additional metadata to be added to the filter state for logging purposes. The metadata
       will be added to StreamInfo's filter state under the namespace corresponding to the
       ext_proc filter name.
       
      .google.protobuf.Struct filter_metadata = 13;
      Specified by:
      getFilterMetadata in interface ExternalProcessorOrBuilder
      Returns:
      The filterMetadata.
    • getFilterMetadataOrBuilder

      public com.google.protobuf.StructOrBuilder getFilterMetadataOrBuilder()
       Additional metadata to be added to the filter state for logging purposes. The metadata
       will be added to StreamInfo's filter state under the namespace corresponding to the
       ext_proc filter name.
       
      .google.protobuf.Struct filter_metadata = 13;
      Specified by:
      getFilterMetadataOrBuilder in interface ExternalProcessorOrBuilder
    • getAllowModeOverride

      public boolean getAllowModeOverride()
       If ``allow_mode_override`` is set to true, the filter config :ref:`processing_mode
       <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
       can be overridden by the response message from the external processing server
       :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`.
       If not set, ``mode_override`` API in the response message will be ignored.
       
      bool allow_mode_override = 14;
      Specified by:
      getAllowModeOverride in interface ExternalProcessorOrBuilder
      Returns:
      The allowModeOverride.
    • getDisableImmediateResponse

      public boolean getDisableImmediateResponse()
       If set to true, ignore the
       :ref:`immediate_response <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.immediate_response>`
       message in an external processor response. In such case, no local reply will be sent.
       Instead, the stream to the external processor will be closed. There will be no
       more external processing for this stream from now on.
       
      bool disable_immediate_response = 15;
      Specified by:
      getDisableImmediateResponse in interface ExternalProcessorOrBuilder
      Returns:
      The disableImmediateResponse.
    • hasMetadataOptions

      public boolean hasMetadataOptions()
       Options related to the sending and receiving of dynamic metadata.
       
      .envoy.extensions.filters.http.ext_proc.v3.MetadataOptions metadata_options = 16;
      Specified by:
      hasMetadataOptions in interface ExternalProcessorOrBuilder
      Returns:
      Whether the metadataOptions field is set.
    • getMetadataOptions

      public MetadataOptions getMetadataOptions()
       Options related to the sending and receiving of dynamic metadata.
       
      .envoy.extensions.filters.http.ext_proc.v3.MetadataOptions metadata_options = 16;
      Specified by:
      getMetadataOptions in interface ExternalProcessorOrBuilder
      Returns:
      The metadataOptions.
    • getMetadataOptionsOrBuilder

      public MetadataOptionsOrBuilder getMetadataOptionsOrBuilder()
       Options related to the sending and receiving of dynamic metadata.
       
      .envoy.extensions.filters.http.ext_proc.v3.MetadataOptions metadata_options = 16;
      Specified by:
      getMetadataOptionsOrBuilder in interface ExternalProcessorOrBuilder
    • getObservabilityMode

      public boolean getObservabilityMode()
       If true, send each part of the HTTP request or response specified by ProcessingMode
       without pausing on filter chain iteration. It is "Send and Go" mode that can be used
       by external processor to observe Envoy data and status. In this mode:
      
       1. Only STREAMED body processing mode is supported and any other body processing modes will be
       ignored. NONE mode(i.e., skip body processing) will still work as expected.
      
       2. External processor should not send back processing response, as any responses will be ignored.
       This also means that
       :ref:`message_timeout <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.message_timeout>`
       restriction doesn't apply to this mode.
      
       3. External processor may still close the stream to indicate that no more messages are needed.
      
       .. warning::
      
          Flow control is necessary mechanism to prevent the fast sender (either downstream client or upstream server)
          from overwhelming the external processor when its processing speed is slower.
          This protective measure is being explored and developed but has not been ready yet, so please use your own
          discretion when enabling this feature.
          This work is currently tracked under https://github.com/envoyproxy/envoy/issues/33319.
       
      bool observability_mode = 17;
      Specified by:
      getObservabilityMode in interface ExternalProcessorOrBuilder
      Returns:
      The observabilityMode.
    • getDisableClearRouteCache

      public boolean getDisableClearRouteCache()
       Prevents clearing the route-cache when the
       :ref:`clear_route_cache <envoy_v3_api_field_service.ext_proc.v3.CommonResponse.clear_route_cache>`
       field is set in an external processor response.
       Only one of ``disable_clear_route_cache`` or ``route_cache_action`` can be set.
       It is recommended to set ``route_cache_action`` which supersedes ``disable_clear_route_cache``.
       
      bool disable_clear_route_cache = 11 [(.udpa.annotations.field_migrate) = { ... }
      Specified by:
      getDisableClearRouteCache in interface ExternalProcessorOrBuilder
      Returns:
      The disableClearRouteCache.
    • getRouteCacheActionValue

      public int getRouteCacheActionValue()
       Specifies the action to be taken when an external processor response is
       received in response to request headers. It is recommended to set this field than set
       :ref:`disable_clear_route_cache <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.disable_clear_route_cache>`.
       Only one of ``disable_clear_route_cache`` or ``route_cache_action`` can be set.
       
      .envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.RouteCacheAction route_cache_action = 18 [(.udpa.annotations.field_migrate) = { ... }
      Specified by:
      getRouteCacheActionValue in interface ExternalProcessorOrBuilder
      Returns:
      The enum numeric value on the wire for routeCacheAction.
    • getRouteCacheAction

      public ExternalProcessor.RouteCacheAction getRouteCacheAction()
       Specifies the action to be taken when an external processor response is
       received in response to request headers. It is recommended to set this field than set
       :ref:`disable_clear_route_cache <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.disable_clear_route_cache>`.
       Only one of ``disable_clear_route_cache`` or ``route_cache_action`` can be set.
       
      .envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor.RouteCacheAction route_cache_action = 18 [(.udpa.annotations.field_migrate) = { ... }
      Specified by:
      getRouteCacheAction in interface ExternalProcessorOrBuilder
      Returns:
      The routeCacheAction.
    • hasDeferredCloseTimeout

      public boolean hasDeferredCloseTimeout()
       Specifies the deferred closure timeout for gRPC stream that connects to external processor. Currently, the deferred stream closure
       is only used in :ref:`observability_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.observability_mode>`.
       In observability mode, gRPC streams may be held open to the external processor longer than the lifetime of the regular client to
       backend stream lifetime. In this case, Envoy will eventually timeout the external processor stream according to this time limit.
       The default value is 5000 milliseconds (5 seconds) if not specified.
       
      .google.protobuf.Duration deferred_close_timeout = 19;
      Specified by:
      hasDeferredCloseTimeout in interface ExternalProcessorOrBuilder
      Returns:
      Whether the deferredCloseTimeout field is set.
    • getDeferredCloseTimeout

      public com.google.protobuf.Duration getDeferredCloseTimeout()
       Specifies the deferred closure timeout for gRPC stream that connects to external processor. Currently, the deferred stream closure
       is only used in :ref:`observability_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.observability_mode>`.
       In observability mode, gRPC streams may be held open to the external processor longer than the lifetime of the regular client to
       backend stream lifetime. In this case, Envoy will eventually timeout the external processor stream according to this time limit.
       The default value is 5000 milliseconds (5 seconds) if not specified.
       
      .google.protobuf.Duration deferred_close_timeout = 19;
      Specified by:
      getDeferredCloseTimeout in interface ExternalProcessorOrBuilder
      Returns:
      The deferredCloseTimeout.
    • getDeferredCloseTimeoutOrBuilder

      public com.google.protobuf.DurationOrBuilder getDeferredCloseTimeoutOrBuilder()
       Specifies the deferred closure timeout for gRPC stream that connects to external processor. Currently, the deferred stream closure
       is only used in :ref:`observability_mode <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.observability_mode>`.
       In observability mode, gRPC streams may be held open to the external processor longer than the lifetime of the regular client to
       backend stream lifetime. In this case, Envoy will eventually timeout the external processor stream according to this time limit.
       The default value is 5000 milliseconds (5 seconds) if not specified.
       
      .google.protobuf.Duration deferred_close_timeout = 19;
      Specified by:
      getDeferredCloseTimeoutOrBuilder in interface ExternalProcessorOrBuilder
    • getSendBodyWithoutWaitingForHeaderResponse

      public boolean getSendBodyWithoutWaitingForHeaderResponse()
       Send body to the side stream server once it arrives without waiting for the header response from that server.
       It only works for STREAMED body processing mode. For any other body processing modes, it is ignored.
       The server has two options upon receiving a header request:
      
       1. Instant Response: send the header response as soon as the header request is received.
      
       2. Delayed Response: wait for the body before sending any response.
      
       In all scenarios, the header-body ordering must always be maintained.
      
       If enabled Envoy will ignore the
       :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>`
       value that the server sends in the header response. This is because Envoy may have already
       sent the body to the server, prior to processing the header response.
       
      bool send_body_without_waiting_for_header_response = 21;
      Specified by:
      getSendBodyWithoutWaitingForHeaderResponse in interface ExternalProcessorOrBuilder
      Returns:
      The sendBodyWithoutWaitingForHeaderResponse.
    • getAllowedOverrideModesList

      public List<ProcessingMode> getAllowedOverrideModesList()
       When :ref:`allow_mode_override
       <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and
       ``allowed_override_modes`` is configured, the filter config :ref:`processing_mode
       <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
       can only be overridden by the response message from the external processing server iff the
       :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by
       the ``allowed_override_modes`` allow-list below.
       Since request_header_mode is not applicable in any way, it's ignored in comparison.
       
      repeated .envoy.extensions.filters.http.ext_proc.v3.ProcessingMode allowed_override_modes = 22;
      Specified by:
      getAllowedOverrideModesList in interface ExternalProcessorOrBuilder
    • getAllowedOverrideModesOrBuilderList

      public List<? extends ProcessingModeOrBuilder> getAllowedOverrideModesOrBuilderList()
       When :ref:`allow_mode_override
       <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and
       ``allowed_override_modes`` is configured, the filter config :ref:`processing_mode
       <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
       can only be overridden by the response message from the external processing server iff the
       :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by
       the ``allowed_override_modes`` allow-list below.
       Since request_header_mode is not applicable in any way, it's ignored in comparison.
       
      repeated .envoy.extensions.filters.http.ext_proc.v3.ProcessingMode allowed_override_modes = 22;
      Specified by:
      getAllowedOverrideModesOrBuilderList in interface ExternalProcessorOrBuilder
    • getAllowedOverrideModesCount

      public int getAllowedOverrideModesCount()
       When :ref:`allow_mode_override
       <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and
       ``allowed_override_modes`` is configured, the filter config :ref:`processing_mode
       <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
       can only be overridden by the response message from the external processing server iff the
       :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by
       the ``allowed_override_modes`` allow-list below.
       Since request_header_mode is not applicable in any way, it's ignored in comparison.
       
      repeated .envoy.extensions.filters.http.ext_proc.v3.ProcessingMode allowed_override_modes = 22;
      Specified by:
      getAllowedOverrideModesCount in interface ExternalProcessorOrBuilder
    • getAllowedOverrideModes

      public ProcessingMode getAllowedOverrideModes(int index)
       When :ref:`allow_mode_override
       <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and
       ``allowed_override_modes`` is configured, the filter config :ref:`processing_mode
       <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
       can only be overridden by the response message from the external processing server iff the
       :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by
       the ``allowed_override_modes`` allow-list below.
       Since request_header_mode is not applicable in any way, it's ignored in comparison.
       
      repeated .envoy.extensions.filters.http.ext_proc.v3.ProcessingMode allowed_override_modes = 22;
      Specified by:
      getAllowedOverrideModes in interface ExternalProcessorOrBuilder
    • getAllowedOverrideModesOrBuilder

      public ProcessingModeOrBuilder getAllowedOverrideModesOrBuilder(int index)
       When :ref:`allow_mode_override
       <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.allow_mode_override>` is enabled and
       ``allowed_override_modes`` is configured, the filter config :ref:`processing_mode
       <envoy_v3_api_field_extensions.filters.http.ext_proc.v3.ExternalProcessor.processing_mode>`
       can only be overridden by the response message from the external processing server iff the
       :ref:`mode_override <envoy_v3_api_field_service.ext_proc.v3.ProcessingResponse.mode_override>` is allowed by
       the ``allowed_override_modes`` allow-list below.
       Since request_header_mode is not applicable in any way, it's ignored in comparison.
       
      repeated .envoy.extensions.filters.http.ext_proc.v3.ProcessingMode allowed_override_modes = 22;
      Specified by:
      getAllowedOverrideModesOrBuilder in interface ExternalProcessorOrBuilder
    • hasOnProcessingResponse

      public boolean hasOnProcessingResponse()
       Decorator to introduce custom logic that runs after a message received from
       the External Processor is processed, but before continuing filter chain iteration.
      
       .. note::
         Response processors are currently in alpha.
      
       [#extension-category: envoy.http.ext_proc.response_processors]
       
      .envoy.config.core.v3.TypedExtensionConfig on_processing_response = 23 [(.xds.annotations.v3.field_status) = { ... }
      Specified by:
      hasOnProcessingResponse in interface ExternalProcessorOrBuilder
      Returns:
      Whether the onProcessingResponse field is set.
    • getOnProcessingResponse

      public TypedExtensionConfig getOnProcessingResponse()
       Decorator to introduce custom logic that runs after a message received from
       the External Processor is processed, but before continuing filter chain iteration.
      
       .. note::
         Response processors are currently in alpha.
      
       [#extension-category: envoy.http.ext_proc.response_processors]
       
      .envoy.config.core.v3.TypedExtensionConfig on_processing_response = 23 [(.xds.annotations.v3.field_status) = { ... }
      Specified by:
      getOnProcessingResponse in interface ExternalProcessorOrBuilder
      Returns:
      The onProcessingResponse.
    • getOnProcessingResponseOrBuilder

      public TypedExtensionConfigOrBuilder getOnProcessingResponseOrBuilder()
       Decorator to introduce custom logic that runs after a message received from
       the External Processor is processed, but before continuing filter chain iteration.
      
       .. note::
         Response processors are currently in alpha.
      
       [#extension-category: envoy.http.ext_proc.response_processors]
       
      .envoy.config.core.v3.TypedExtensionConfig on_processing_response = 23 [(.xds.annotations.v3.field_status) = { ... }
      Specified by:
      getOnProcessingResponseOrBuilder in interface ExternalProcessorOrBuilder
    • isInitialized

      public final boolean isInitialized()
      Specified by:
      isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
      Overrides:
      isInitialized in class com.google.protobuf.GeneratedMessageV3
    • writeTo

      public void writeTo(com.google.protobuf.CodedOutputStream output) throws IOException
      Specified by:
      writeTo in interface com.google.protobuf.MessageLite
      Overrides:
      writeTo in class com.google.protobuf.GeneratedMessageV3
      Throws:
      IOException
    • getSerializedSize

      public int getSerializedSize()
      Specified by:
      getSerializedSize in interface com.google.protobuf.MessageLite
      Overrides:
      getSerializedSize in class com.google.protobuf.GeneratedMessageV3
    • equals

      public boolean equals(Object obj)
      Specified by:
      equals in interface com.google.protobuf.Message
      Overrides:
      equals in class com.google.protobuf.AbstractMessage
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface com.google.protobuf.Message
      Overrides:
      hashCode in class com.google.protobuf.AbstractMessage
    • parseFrom

      public static ExternalProcessor parseFrom(ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static ExternalProcessor parseFrom(ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static ExternalProcessor parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static ExternalProcessor parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static ExternalProcessor parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static ExternalProcessor parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

      public static ExternalProcessor parseFrom(InputStream input) throws IOException
      Throws:
      IOException
    • parseFrom

      public static ExternalProcessor parseFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • parseDelimitedFrom

      public static ExternalProcessor parseDelimitedFrom(InputStream input) throws IOException
      Throws:
      IOException
    • parseDelimitedFrom

      public static ExternalProcessor parseDelimitedFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • parseFrom

      public static ExternalProcessor parseFrom(com.google.protobuf.CodedInputStream input) throws IOException
      Throws:
      IOException
    • parseFrom

      public static ExternalProcessor parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • newBuilderForType

      public ExternalProcessor.Builder newBuilderForType()
      Specified by:
      newBuilderForType in interface com.google.protobuf.Message
      Specified by:
      newBuilderForType in interface com.google.protobuf.MessageLite
    • newBuilder

      public static ExternalProcessor.Builder newBuilder()
    • newBuilder

      public static ExternalProcessor.Builder newBuilder(ExternalProcessor prototype)
    • toBuilder

      public ExternalProcessor.Builder toBuilder()
      Specified by:
      toBuilder in interface com.google.protobuf.Message
      Specified by:
      toBuilder in interface com.google.protobuf.MessageLite
    • newBuilderForType

      protected ExternalProcessor.Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
      Specified by:
      newBuilderForType in class com.google.protobuf.GeneratedMessageV3
    • getDefaultInstance

      public static ExternalProcessor getDefaultInstance()
    • parser

      public static com.google.protobuf.Parser<ExternalProcessor> parser()
    • getParserForType

      public com.google.protobuf.Parser<ExternalProcessor> getParserForType()
      Specified by:
      getParserForType in interface com.google.protobuf.Message
      Specified by:
      getParserForType in interface com.google.protobuf.MessageLite
      Overrides:
      getParserForType in class com.google.protobuf.GeneratedMessageV3
    • getDefaultInstanceForType

      public ExternalProcessor getDefaultInstanceForType()
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder