Enum ProcessingMode.BodySendMode

java.lang.Object
java.lang.Enum<ProcessingMode.BodySendMode>
io.envoyproxy.envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendMode
All Implemented Interfaces:
com.google.protobuf.Internal.EnumLite, com.google.protobuf.ProtocolMessageEnum, Serializable, Comparable<ProcessingMode.BodySendMode>, java.lang.constant.Constable
Enclosing class:
ProcessingMode

public static enum ProcessingMode.BodySendMode extends Enum<ProcessingMode.BodySendMode> implements com.google.protobuf.ProtocolMessageEnum
 Control how the request and response bodies are handled
 When body mutation by external processor is enabled, ext_proc filter will always remove
 the content length header in four cases below because content length can not be guaranteed
 to be set correctly:
 1) STREAMED BodySendMode: header processing completes before body mutation comes back.
 2) BUFFERED_PARTIAL BodySendMode: body is buffered and could be injected in different phases.
 3) BUFFERED BodySendMode + SKIP HeaderSendMode: header processing (e.g., update content-length) is skipped.
 4) FULL_DUPLEX_STREAMED BodySendMode: header processing completes before body mutation comes back.

 In Envoy's http1 codec implementation, removing content length will enable chunked transfer
 encoding whenever feasible. The recipient (either client or server) must be able
 to parse and decode the chunked transfer coding.
 (see `details in RFC9112 <https://tools.ietf.org/html/rfc9112#section-7.1>`_).

 In BUFFERED BodySendMode + SEND HeaderSendMode, content length header is allowed but it is
 external processor's responsibility to set the content length correctly matched to the length
 of mutated body. If they don't match, the corresponding body mutation will be rejected and
 local reply will be sent with an error message.
 
Protobuf enum envoy.extensions.filters.http.ext_proc.v3.ProcessingMode.BodySendMode
  • Enum Constant Details

    • NONE

      public static final ProcessingMode.BodySendMode NONE
       Do not send the body at all. This is the default.
       
      NONE = 0;
    • STREAMED

      public static final ProcessingMode.BodySendMode STREAMED
       Stream the body to the server in pieces as they are seen.
       
      STREAMED = 1;
    • BUFFERED

      public static final ProcessingMode.BodySendMode BUFFERED
       Buffer the message body in memory and send the entire body at once.
       If the body exceeds the configured buffer limit, then the
       downstream system will receive an error.
       
      BUFFERED = 2;
    • BUFFERED_PARTIAL

      public static final ProcessingMode.BodySendMode BUFFERED_PARTIAL
       Buffer the message body in memory and send the entire body in one
       chunk. If the body exceeds the configured buffer limit, then the body contents
       up to the buffer limit will be sent.
       
      BUFFERED_PARTIAL = 3;
    • FULL_DUPLEX_STREAMED

      public static final ProcessingMode.BodySendMode FULL_DUPLEX_STREAMED
      FULL_DUPLEX_STREAMED = 4;
    • GRPC

      public static final ProcessingMode.BodySendMode GRPC
       [#not-implemented-hide:]
       A mode for gRPC traffic. This is similar to ``FULL_DUPLEX_STREAMED``,
       except that instead of sending raw chunks of the HTTP/2 DATA frames,
       the ext_proc client will de-frame the individual gRPC messages inside
       the HTTP/2 DATA frames, and as each message is de-framed, it will be
       sent to the ext_proc server as a :ref:`request_body
       <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.request_body>`
       or :ref:`response_body
       <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.response_body>`.
       The ext_proc server will stream back individual gRPC messages in the
       :ref:`StreamedBodyResponse <envoy_v3_api_msg_service.ext_proc.v3.StreamedBodyResponse>`
       field, but the number of messages sent by the ext_proc server
       does not need to equal the number of messages sent by the data
       plane. This allows the ext_proc server to change the number of
       messages sent on the stream.
       In this mode, the client will send body and trailers to the server as
       they arrive.
       
      GRPC = 5;
    • UNRECOGNIZED

      public static final ProcessingMode.BodySendMode UNRECOGNIZED
  • Field Details

    • NONE_VALUE

      public static final int NONE_VALUE
       Do not send the body at all. This is the default.
       
      NONE = 0;
      See Also:
    • STREAMED_VALUE

      public static final int STREAMED_VALUE
       Stream the body to the server in pieces as they are seen.
       
      STREAMED = 1;
      See Also:
    • BUFFERED_VALUE

      public static final int BUFFERED_VALUE
       Buffer the message body in memory and send the entire body at once.
       If the body exceeds the configured buffer limit, then the
       downstream system will receive an error.
       
      BUFFERED = 2;
      See Also:
    • BUFFERED_PARTIAL_VALUE

      public static final int BUFFERED_PARTIAL_VALUE
       Buffer the message body in memory and send the entire body in one
       chunk. If the body exceeds the configured buffer limit, then the body contents
       up to the buffer limit will be sent.
       
      BUFFERED_PARTIAL = 3;
      See Also:
    • FULL_DUPLEX_STREAMED_VALUE

      public static final int FULL_DUPLEX_STREAMED_VALUE
      FULL_DUPLEX_STREAMED = 4;
      See Also:
    • GRPC_VALUE

      public static final int GRPC_VALUE
       [#not-implemented-hide:]
       A mode for gRPC traffic. This is similar to ``FULL_DUPLEX_STREAMED``,
       except that instead of sending raw chunks of the HTTP/2 DATA frames,
       the ext_proc client will de-frame the individual gRPC messages inside
       the HTTP/2 DATA frames, and as each message is de-framed, it will be
       sent to the ext_proc server as a :ref:`request_body
       <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.request_body>`
       or :ref:`response_body
       <envoy_v3_api_field_service.ext_proc.v3.ProcessingRequest.response_body>`.
       The ext_proc server will stream back individual gRPC messages in the
       :ref:`StreamedBodyResponse <envoy_v3_api_msg_service.ext_proc.v3.StreamedBodyResponse>`
       field, but the number of messages sent by the ext_proc server
       does not need to equal the number of messages sent by the data
       plane. This allows the ext_proc server to change the number of
       messages sent on the stream.
       In this mode, the client will send body and trailers to the server as
       they arrive.
       
      GRPC = 5;
      See Also:
  • Method Details

    • values

      public static ProcessingMode.BodySendMode[] values()
      Returns an array containing the constants of this enum type, in the order they are declared.
      Returns:
      an array containing the constants of this enum type, in the order they are declared
    • valueOf

      public static ProcessingMode.BodySendMode valueOf(String name)
      Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum type has no constant with the specified name
      NullPointerException - if the argument is null
    • getNumber

      public final int getNumber()
      Specified by:
      getNumber in interface com.google.protobuf.Internal.EnumLite
      Specified by:
      getNumber in interface com.google.protobuf.ProtocolMessageEnum
    • valueOf

      @Deprecated public static ProcessingMode.BodySendMode valueOf(int value)
      Deprecated.
      Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
      Parameters:
      value - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum type has no constant with the specified name
      NullPointerException - if the argument is null
    • forNumber

      public static ProcessingMode.BodySendMode forNumber(int value)
      Parameters:
      value - The numeric wire value of the corresponding enum entry.
      Returns:
      The enum associated with the given numeric wire value.
    • internalGetValueMap

      public static com.google.protobuf.Internal.EnumLiteMap<ProcessingMode.BodySendMode> internalGetValueMap()
    • getValueDescriptor

      public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor()
      Specified by:
      getValueDescriptor in interface com.google.protobuf.ProtocolMessageEnum
    • getDescriptorForType

      public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType()
      Specified by:
      getDescriptorForType in interface com.google.protobuf.ProtocolMessageEnum
    • getDescriptor

      public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor()
    • valueOf

      public static ProcessingMode.BodySendMode valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc)
      Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
      Parameters:
      desc - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum type has no constant with the specified name
      NullPointerException - if the argument is null