All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.scala Maven / Gradle / Ivy

There is a newer version: 1.23.0-dev-f04150-1
Show newest version
// Generated by the Scala Plugin for the Protocol Buffer Compiler.
// Do not edit!
//
// Protofile syntax: PROTO3

package io.envoyproxy.envoy.extensions.upstreams.http.v3

/** HttpProtocolOptions specifies Http upstream protocol options. This object
  * is used in
  * :ref:`typed_extension_protocol_options<envoy_v3_api_field_config.cluster.v3.Cluster.typed_extension_protocol_options>`,
  * keyed by the name `envoy.extensions.upstreams.http.v3.HttpProtocolOptions`.
  *
  * This controls what protocol(s) should be used for upstream and how said protocol(s) are configured.
  *
  * This replaces the prior pattern of explicit protocol configuration directly
  * in the cluster. So a configuration like this, explicitly configuring the use of HTTP/2 upstream:
  *
  * .. code::
  *
  *   clusters:
  *     - name: some_service
  *       connect_timeout: 5s
  *       upstream_http_protocol_options:
  *         auto_sni: true
  *       common_http_protocol_options:
  *         idle_timeout: 1s
  *       http2_protocol_options:
  *         max_concurrent_streams: 100
  *        .... [further cluster config]
  *
  * Would now look like this:
  *
  * .. code::
  *
  *   clusters:
  *     - name: some_service
  *       connect_timeout: 5s
  *       typed_extension_protocol_options:
  *         envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
  *           "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
  *           upstream_http_protocol_options:
  *             auto_sni: true
  *           common_http_protocol_options:
  *             idle_timeout: 1s
  *           explicit_http_config:
  *             http2_protocol_options:
  *               max_concurrent_streams: 100
  *        .... [further cluster config]
  * [#next-free-field: 6]
  *
  * @param commonHttpProtocolOptions
  *   This contains options common across HTTP/1 and HTTP/2
  * @param upstreamHttpProtocolOptions
  *   This contains common protocol options which are only applied upstream.
  */
@SerialVersionUID(0L)
final case class HttpProtocolOptions(
    commonHttpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions] = _root_.scala.None,
    upstreamHttpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.UpstreamHttpProtocolOptions] = _root_.scala.None,
    upstreamProtocolOptions: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.Empty,
    unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
    ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[HttpProtocolOptions] {
    @transient
    private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
    private[this] def __computeSerializedSize(): _root_.scala.Int = {
      var __size = 0
      if (commonHttpProtocolOptions.isDefined) {
        val __value = commonHttpProtocolOptions.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (upstreamHttpProtocolOptions.isDefined) {
        val __value = upstreamHttpProtocolOptions.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (upstreamProtocolOptions.explicitHttpConfig.isDefined) {
        val __value = upstreamProtocolOptions.explicitHttpConfig.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (upstreamProtocolOptions.useDownstreamProtocolConfig.isDefined) {
        val __value = upstreamProtocolOptions.useDownstreamProtocolConfig.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (upstreamProtocolOptions.autoConfig.isDefined) {
        val __value = upstreamProtocolOptions.autoConfig.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      __size += unknownFields.serializedSize
      __size
    }
    override def serializedSize: _root_.scala.Int = {
      var __size = __serializedSizeMemoized
      if (__size == 0) {
        __size = __computeSerializedSize() + 1
        __serializedSizeMemoized = __size
      }
      __size - 1
      
    }
    def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
      commonHttpProtocolOptions.foreach { __v =>
        val __m = __v
        _output__.writeTag(1, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      upstreamHttpProtocolOptions.foreach { __v =>
        val __m = __v
        _output__.writeTag(2, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      upstreamProtocolOptions.explicitHttpConfig.foreach { __v =>
        val __m = __v
        _output__.writeTag(3, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      upstreamProtocolOptions.useDownstreamProtocolConfig.foreach { __v =>
        val __m = __v
        _output__.writeTag(4, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      upstreamProtocolOptions.autoConfig.foreach { __v =>
        val __m = __v
        _output__.writeTag(5, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      unknownFields.writeTo(_output__)
    }
    def getCommonHttpProtocolOptions: io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions = commonHttpProtocolOptions.getOrElse(io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions.defaultInstance)
    def clearCommonHttpProtocolOptions: HttpProtocolOptions = copy(commonHttpProtocolOptions = _root_.scala.None)
    def withCommonHttpProtocolOptions(__v: io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions): HttpProtocolOptions = copy(commonHttpProtocolOptions = Option(__v))
    def getUpstreamHttpProtocolOptions: io.envoyproxy.envoy.config.core.v3.UpstreamHttpProtocolOptions = upstreamHttpProtocolOptions.getOrElse(io.envoyproxy.envoy.config.core.v3.UpstreamHttpProtocolOptions.defaultInstance)
    def clearUpstreamHttpProtocolOptions: HttpProtocolOptions = copy(upstreamHttpProtocolOptions = _root_.scala.None)
    def withUpstreamHttpProtocolOptions(__v: io.envoyproxy.envoy.config.core.v3.UpstreamHttpProtocolOptions): HttpProtocolOptions = copy(upstreamHttpProtocolOptions = Option(__v))
    def getExplicitHttpConfig: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig = upstreamProtocolOptions.explicitHttpConfig.getOrElse(io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.defaultInstance)
    def withExplicitHttpConfig(__v: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig): HttpProtocolOptions = copy(upstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.ExplicitHttpConfig(__v))
    def getUseDownstreamProtocolConfig: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig = upstreamProtocolOptions.useDownstreamProtocolConfig.getOrElse(io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig.defaultInstance)
    def withUseDownstreamProtocolConfig(__v: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig): HttpProtocolOptions = copy(upstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.UseDownstreamProtocolConfig(__v))
    def getAutoConfig: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig = upstreamProtocolOptions.autoConfig.getOrElse(io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig.defaultInstance)
    def withAutoConfig(__v: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig): HttpProtocolOptions = copy(upstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.AutoConfig(__v))
    def clearUpstreamProtocolOptions: HttpProtocolOptions = copy(upstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.Empty)
    def withUpstreamProtocolOptions(__v: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions): HttpProtocolOptions = copy(upstreamProtocolOptions = __v)
    def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
    def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
    def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
      (__fieldNumber: @_root_.scala.unchecked) match {
        case 1 => commonHttpProtocolOptions.orNull
        case 2 => upstreamHttpProtocolOptions.orNull
        case 3 => upstreamProtocolOptions.explicitHttpConfig.orNull
        case 4 => upstreamProtocolOptions.useDownstreamProtocolConfig.orNull
        case 5 => upstreamProtocolOptions.autoConfig.orNull
      }
    }
    def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
      _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
      (__field.number: @_root_.scala.unchecked) match {
        case 1 => commonHttpProtocolOptions.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 2 => upstreamHttpProtocolOptions.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 3 => upstreamProtocolOptions.explicitHttpConfig.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 4 => upstreamProtocolOptions.useDownstreamProtocolConfig.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 5 => upstreamProtocolOptions.autoConfig.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
      }
    }
    def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
    def companion: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.type = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions
    // @@protoc_insertion_point(GeneratedMessage[envoy.extensions.upstreams.http.v3.HttpProtocolOptions])
}

object HttpProtocolOptions extends scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions] {
  implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions] = this
  def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions = {
    var __commonHttpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions] = _root_.scala.None
    var __upstreamHttpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.UpstreamHttpProtocolOptions] = _root_.scala.None
    var __upstreamProtocolOptions: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.Empty
    var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
    var _done__ = false
    while (!_done__) {
      val _tag__ = _input__.readTag()
      _tag__ match {
        case 0 => _done__ = true
        case 10 =>
          __commonHttpProtocolOptions = Option(__commonHttpProtocolOptions.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 18 =>
          __upstreamHttpProtocolOptions = Option(__upstreamHttpProtocolOptions.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.UpstreamHttpProtocolOptions](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 26 =>
          __upstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.ExplicitHttpConfig(__upstreamProtocolOptions.explicitHttpConfig.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 34 =>
          __upstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.UseDownstreamProtocolConfig(__upstreamProtocolOptions.useDownstreamProtocolConfig.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 42 =>
          __upstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.AutoConfig(__upstreamProtocolOptions.autoConfig.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case tag =>
          if (_unknownFields__ == null) {
            _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
          }
          _unknownFields__.parseField(tag, _input__)
      }
    }
    io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions(
        commonHttpProtocolOptions = __commonHttpProtocolOptions,
        upstreamHttpProtocolOptions = __upstreamHttpProtocolOptions,
        upstreamProtocolOptions = __upstreamProtocolOptions,
        unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
    )
  }
  implicit def messageReads: _root_.scalapb.descriptors.Reads[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions] = _root_.scalapb.descriptors.Reads{
    case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
      _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
      io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions(
        commonHttpProtocolOptions = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions]]),
        upstreamHttpProtocolOptions = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.config.core.v3.UpstreamHttpProtocolOptions]]),
        upstreamProtocolOptions = __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig]]).map(io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.ExplicitHttpConfig(_))
            .orElse[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions](__fieldsMap.get(scalaDescriptor.findFieldByNumber(4).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig]]).map(io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.UseDownstreamProtocolConfig(_)))
            .orElse[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions](__fieldsMap.get(scalaDescriptor.findFieldByNumber(5).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig]]).map(io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.AutoConfig(_)))
            .getOrElse(io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.Empty)
      )
    case _ => throw new RuntimeException("Expected PMessage")
  }
  def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = HttpProtocolOptionsProto.javaDescriptor.getMessageTypes().get(0)
  def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = HttpProtocolOptionsProto.scalaDescriptor.messages(0)
  def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
    var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
    (__number: @_root_.scala.unchecked) match {
      case 1 => __out = io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions
      case 2 => __out = io.envoyproxy.envoy.config.core.v3.UpstreamHttpProtocolOptions
      case 3 => __out = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig
      case 4 => __out = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig
      case 5 => __out = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig
    }
    __out
  }
  lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] =
    Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]](
      _root_.io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig,
      _root_.io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig,
      _root_.io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig
    )
  def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
  lazy val defaultInstance = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions(
    commonHttpProtocolOptions = _root_.scala.None,
    upstreamHttpProtocolOptions = _root_.scala.None,
    upstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.Empty
  )
  sealed trait UpstreamProtocolOptions extends _root_.scalapb.GeneratedOneof {
    def isEmpty: _root_.scala.Boolean = false
    def isDefined: _root_.scala.Boolean = true
    def isExplicitHttpConfig: _root_.scala.Boolean = false
    def isUseDownstreamProtocolConfig: _root_.scala.Boolean = false
    def isAutoConfig: _root_.scala.Boolean = false
    def explicitHttpConfig: _root_.scala.Option[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig] = _root_.scala.None
    def useDownstreamProtocolConfig: _root_.scala.Option[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig] = _root_.scala.None
    def autoConfig: _root_.scala.Option[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig] = _root_.scala.None
  }
  object UpstreamProtocolOptions {
    @SerialVersionUID(0L)
    case object Empty extends io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions {
      type ValueType = _root_.scala.Nothing
      override def isEmpty: _root_.scala.Boolean = true
      override def isDefined: _root_.scala.Boolean = false
      override def number: _root_.scala.Int = 0
      override def value: _root_.scala.Nothing = throw new java.util.NoSuchElementException("Empty.value")
    }
  
    @SerialVersionUID(0L)
    final case class ExplicitHttpConfig(value: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig) extends io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions {
      type ValueType = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig
      override def isExplicitHttpConfig: _root_.scala.Boolean = true
      override def explicitHttpConfig: _root_.scala.Option[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig] = Some(value)
      override def number: _root_.scala.Int = 3
    }
    @SerialVersionUID(0L)
    final case class UseDownstreamProtocolConfig(value: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig) extends io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions {
      type ValueType = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig
      override def isUseDownstreamProtocolConfig: _root_.scala.Boolean = true
      override def useDownstreamProtocolConfig: _root_.scala.Option[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig] = Some(value)
      override def number: _root_.scala.Int = 4
    }
    @SerialVersionUID(0L)
    final case class AutoConfig(value: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig) extends io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions {
      type ValueType = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig
      override def isAutoConfig: _root_.scala.Boolean = true
      override def autoConfig: _root_.scala.Option[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig] = Some(value)
      override def number: _root_.scala.Int = 5
    }
  }
  /** If this is used, the cluster will only operate on one of the possible upstream protocols.
    * Note that HTTP/2 or above should generally be used for upstream gRPC clusters.
    */
  @SerialVersionUID(0L)
  final case class ExplicitHttpConfig(
      protocolConfig: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Empty,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[ExplicitHttpConfig] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        if (protocolConfig.httpProtocolOptions.isDefined) {
          val __value = protocolConfig.httpProtocolOptions.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        if (protocolConfig.http2ProtocolOptions.isDefined) {
          val __value = protocolConfig.http2ProtocolOptions.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        if (protocolConfig.http3ProtocolOptions.isDefined) {
          val __value = protocolConfig.http3ProtocolOptions.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        protocolConfig.httpProtocolOptions.foreach { __v =>
          val __m = __v
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        protocolConfig.http2ProtocolOptions.foreach { __v =>
          val __m = __v
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        protocolConfig.http3ProtocolOptions.foreach { __v =>
          val __m = __v
          _output__.writeTag(3, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def getHttpProtocolOptions: io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions = protocolConfig.httpProtocolOptions.getOrElse(io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions.defaultInstance)
      def withHttpProtocolOptions(__v: io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions): ExplicitHttpConfig = copy(protocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.HttpProtocolOptions(__v))
      def getHttp2ProtocolOptions: io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions = protocolConfig.http2ProtocolOptions.getOrElse(io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions.defaultInstance)
      def withHttp2ProtocolOptions(__v: io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions): ExplicitHttpConfig = copy(protocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Http2ProtocolOptions(__v))
      def getHttp3ProtocolOptions: io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions = protocolConfig.http3ProtocolOptions.getOrElse(io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions.defaultInstance)
      def withHttp3ProtocolOptions(__v: io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions): ExplicitHttpConfig = copy(protocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Http3ProtocolOptions(__v))
      def clearProtocolConfig: ExplicitHttpConfig = copy(protocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Empty)
      def withProtocolConfig(__v: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig): ExplicitHttpConfig = copy(protocolConfig = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => protocolConfig.httpProtocolOptions.orNull
          case 2 => protocolConfig.http2ProtocolOptions.orNull
          case 3 => protocolConfig.http3ProtocolOptions.orNull
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => protocolConfig.httpProtocolOptions.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 2 => protocolConfig.http2ProtocolOptions.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 3 => protocolConfig.http3ProtocolOptions.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.type = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig
      // @@protoc_insertion_point(GeneratedMessage[envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig])
  }
  
  object ExplicitHttpConfig extends scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig = {
      var __protocolConfig: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Empty
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __protocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.HttpProtocolOptions(__protocolConfig.httpProtocolOptions.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 18 =>
            __protocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Http2ProtocolOptions(__protocolConfig.http2ProtocolOptions.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 26 =>
            __protocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Http3ProtocolOptions(__protocolConfig.http3ProtocolOptions.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig(
          protocolConfig = __protocolConfig,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig(
          protocolConfig = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions]]).map(io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.HttpProtocolOptions(_))
              .orElse[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig](__fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions]]).map(io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Http2ProtocolOptions(_)))
              .orElse[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig](__fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions]]).map(io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Http3ProtocolOptions(_)))
              .getOrElse(io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Empty)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.javaDescriptor.getNestedTypes().get(0)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.scalaDescriptor.nestedMessages(0)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions
        case 2 => __out = io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions
        case 3 => __out = io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig(
      protocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Empty
    )
    sealed trait ProtocolConfig extends _root_.scalapb.GeneratedOneof {
      def isEmpty: _root_.scala.Boolean = false
      def isDefined: _root_.scala.Boolean = true
      def isHttpProtocolOptions: _root_.scala.Boolean = false
      def isHttp2ProtocolOptions: _root_.scala.Boolean = false
      def isHttp3ProtocolOptions: _root_.scala.Boolean = false
      def httpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions] = _root_.scala.None
      def http2ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions] = _root_.scala.None
      def http3ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions] = _root_.scala.None
    }
    object ProtocolConfig {
      @SerialVersionUID(0L)
      case object Empty extends io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig {
        type ValueType = _root_.scala.Nothing
        override def isEmpty: _root_.scala.Boolean = true
        override def isDefined: _root_.scala.Boolean = false
        override def number: _root_.scala.Int = 0
        override def value: _root_.scala.Nothing = throw new java.util.NoSuchElementException("Empty.value")
      }
    
      @SerialVersionUID(0L)
      final case class HttpProtocolOptions(value: io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions) extends io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig {
        type ValueType = io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions
        override def isHttpProtocolOptions: _root_.scala.Boolean = true
        override def httpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions] = Some(value)
        override def number: _root_.scala.Int = 1
      }
      @SerialVersionUID(0L)
      final case class Http2ProtocolOptions(value: io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions) extends io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig {
        type ValueType = io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions
        override def isHttp2ProtocolOptions: _root_.scala.Boolean = true
        override def http2ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions] = Some(value)
        override def number: _root_.scala.Int = 2
      }
      @SerialVersionUID(0L)
      final case class Http3ProtocolOptions(value: io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions) extends io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig {
        type ValueType = io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions
        override def isHttp3ProtocolOptions: _root_.scala.Boolean = true
        override def http3ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions] = Some(value)
        override def number: _root_.scala.Int = 3
      }
    }
    implicit class ExplicitHttpConfigLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig](_l) {
      def httpProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions] = field(_.getHttpProtocolOptions)((c_, f_) => c_.copy(protocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.HttpProtocolOptions(f_)))
      def http2ProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions] = field(_.getHttp2ProtocolOptions)((c_, f_) => c_.copy(protocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Http2ProtocolOptions(f_)))
      def http3ProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions] = field(_.getHttp3ProtocolOptions)((c_, f_) => c_.copy(protocolConfig = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig.Http3ProtocolOptions(f_)))
      def protocolConfig: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig] = field(_.protocolConfig)((c_, f_) => c_.copy(protocolConfig = f_))
    }
    final val HTTP_PROTOCOL_OPTIONS_FIELD_NUMBER = 1
    final val HTTP2_PROTOCOL_OPTIONS_FIELD_NUMBER = 2
    final val HTTP3_PROTOCOL_OPTIONS_FIELD_NUMBER = 3
    def of(
      protocolConfig: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig.ProtocolConfig
    ): _root_.io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig = _root_.io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig(
      protocolConfig
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig])
  }
  
  /** If this is used, the cluster can use either of the configured protocols, and
    * will use whichever protocol was used by the downstream connection.
    *
    * If HTTP/3 is configured for downstream and not configured for upstream,
    * HTTP/3 requests will fail over to HTTP/2.
    *
    * @param http3ProtocolOptions
    *   .. warning::
    *     QUIC upstream support is currently not ready for internet use.
    *     Please see :ref:`here <arch_overview_http3>` for details.
    */
  @SerialVersionUID(0L)
  final case class UseDownstreamHttpConfig(
      httpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions] = _root_.scala.None,
      http2ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions] = _root_.scala.None,
      http3ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions] = _root_.scala.None,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[UseDownstreamHttpConfig] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        if (httpProtocolOptions.isDefined) {
          val __value = httpProtocolOptions.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        if (http2ProtocolOptions.isDefined) {
          val __value = http2ProtocolOptions.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        if (http3ProtocolOptions.isDefined) {
          val __value = http3ProtocolOptions.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        httpProtocolOptions.foreach { __v =>
          val __m = __v
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        http2ProtocolOptions.foreach { __v =>
          val __m = __v
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        http3ProtocolOptions.foreach { __v =>
          val __m = __v
          _output__.writeTag(3, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def getHttpProtocolOptions: io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions = httpProtocolOptions.getOrElse(io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions.defaultInstance)
      def clearHttpProtocolOptions: UseDownstreamHttpConfig = copy(httpProtocolOptions = _root_.scala.None)
      def withHttpProtocolOptions(__v: io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions): UseDownstreamHttpConfig = copy(httpProtocolOptions = Option(__v))
      def getHttp2ProtocolOptions: io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions = http2ProtocolOptions.getOrElse(io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions.defaultInstance)
      def clearHttp2ProtocolOptions: UseDownstreamHttpConfig = copy(http2ProtocolOptions = _root_.scala.None)
      def withHttp2ProtocolOptions(__v: io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions): UseDownstreamHttpConfig = copy(http2ProtocolOptions = Option(__v))
      def getHttp3ProtocolOptions: io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions = http3ProtocolOptions.getOrElse(io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions.defaultInstance)
      def clearHttp3ProtocolOptions: UseDownstreamHttpConfig = copy(http3ProtocolOptions = _root_.scala.None)
      def withHttp3ProtocolOptions(__v: io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions): UseDownstreamHttpConfig = copy(http3ProtocolOptions = Option(__v))
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => httpProtocolOptions.orNull
          case 2 => http2ProtocolOptions.orNull
          case 3 => http3ProtocolOptions.orNull
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => httpProtocolOptions.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 2 => http2ProtocolOptions.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 3 => http3ProtocolOptions.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig.type = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig
      // @@protoc_insertion_point(GeneratedMessage[envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig])
  }
  
  object UseDownstreamHttpConfig extends scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig = {
      var __httpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions] = _root_.scala.None
      var __http2ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions] = _root_.scala.None
      var __http3ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __httpProtocolOptions = Option(__httpProtocolOptions.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 18 =>
            __http2ProtocolOptions = Option(__http2ProtocolOptions.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 26 =>
            __http3ProtocolOptions = Option(__http3ProtocolOptions.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig(
          httpProtocolOptions = __httpProtocolOptions,
          http2ProtocolOptions = __http2ProtocolOptions,
          http3ProtocolOptions = __http3ProtocolOptions,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig(
          httpProtocolOptions = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions]]),
          http2ProtocolOptions = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions]]),
          http3ProtocolOptions = __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions]])
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.javaDescriptor.getNestedTypes().get(1)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.scalaDescriptor.nestedMessages(1)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions
        case 2 => __out = io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions
        case 3 => __out = io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig(
      httpProtocolOptions = _root_.scala.None,
      http2ProtocolOptions = _root_.scala.None,
      http3ProtocolOptions = _root_.scala.None
    )
    implicit class UseDownstreamHttpConfigLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig](_l) {
      def httpProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions] = field(_.getHttpProtocolOptions)((c_, f_) => c_.copy(httpProtocolOptions = Option(f_)))
      def optionalHttpProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions]] = field(_.httpProtocolOptions)((c_, f_) => c_.copy(httpProtocolOptions = f_))
      def http2ProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions] = field(_.getHttp2ProtocolOptions)((c_, f_) => c_.copy(http2ProtocolOptions = Option(f_)))
      def optionalHttp2ProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions]] = field(_.http2ProtocolOptions)((c_, f_) => c_.copy(http2ProtocolOptions = f_))
      def http3ProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions] = field(_.getHttp3ProtocolOptions)((c_, f_) => c_.copy(http3ProtocolOptions = Option(f_)))
      def optionalHttp3ProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions]] = field(_.http3ProtocolOptions)((c_, f_) => c_.copy(http3ProtocolOptions = f_))
    }
    final val HTTP_PROTOCOL_OPTIONS_FIELD_NUMBER = 1
    final val HTTP2_PROTOCOL_OPTIONS_FIELD_NUMBER = 2
    final val HTTP3_PROTOCOL_OPTIONS_FIELD_NUMBER = 3
    def of(
      httpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions],
      http2ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions],
      http3ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions]
    ): _root_.io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig = _root_.io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig(
      httpProtocolOptions,
      http2ProtocolOptions,
      http3ProtocolOptions
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig])
  }
  
  /** If this is used, the cluster can use either HTTP/1 or HTTP/2, and will use whichever
    * protocol is negotiated by ALPN with the upstream.
    * Clusters configured with *AutoHttpConfig* will use the highest available
    * protocol; HTTP/2 if supported, otherwise HTTP/1.
    * If the upstream does not support ALPN, *AutoHttpConfig* will fail over to HTTP/1.
    * This can only be used with transport sockets which support ALPN. Using a
    * transport socket which does not support ALPN will result in configuration
    * failure. The transport layer may be configured with custom ALPN, but the default ALPN
    * for the cluster (or if custom ALPN fails) will be "h2,http/1.1".
    *
    * @param http3ProtocolOptions
    *   Unlike HTTP/1 and HTTP/2, HTTP/3 will not be configured unless it is
    *   present, and (soon) only if there is an indication of server side
    *   support.
    *   See :ref:`here <arch_overview_http3_upstream>` for more information on
    *   when HTTP/3 will be used, and when Envoy will fail over to TCP.
    *  
    *   .. warning::
    *     QUIC upstream support is currently not ready for internet use.
    *     Please see :ref:`here <arch_overview_http3>` for details.
    * @param alternateProtocolsCacheOptions
    *   The presence of alternate protocols cache options causes the use of the
    *   alternate protocols cache, which is responsible for parsing and caching
    *   HTTP Alt-Svc headers. This enables the use of HTTP/3 for origins that
    *   advertise supporting it.
    *  
    *   .. note::
    *     This is required when HTTP/3 is enabled.
    */
  @SerialVersionUID(0L)
  final case class AutoHttpConfig(
      httpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions] = _root_.scala.None,
      http2ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions] = _root_.scala.None,
      http3ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions] = _root_.scala.None,
      alternateProtocolsCacheOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.AlternateProtocolsCacheOptions] = _root_.scala.None,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[AutoHttpConfig] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        if (httpProtocolOptions.isDefined) {
          val __value = httpProtocolOptions.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        if (http2ProtocolOptions.isDefined) {
          val __value = http2ProtocolOptions.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        if (http3ProtocolOptions.isDefined) {
          val __value = http3ProtocolOptions.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        if (alternateProtocolsCacheOptions.isDefined) {
          val __value = alternateProtocolsCacheOptions.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        httpProtocolOptions.foreach { __v =>
          val __m = __v
          _output__.writeTag(1, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        http2ProtocolOptions.foreach { __v =>
          val __m = __v
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        http3ProtocolOptions.foreach { __v =>
          val __m = __v
          _output__.writeTag(3, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        alternateProtocolsCacheOptions.foreach { __v =>
          val __m = __v
          _output__.writeTag(4, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def getHttpProtocolOptions: io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions = httpProtocolOptions.getOrElse(io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions.defaultInstance)
      def clearHttpProtocolOptions: AutoHttpConfig = copy(httpProtocolOptions = _root_.scala.None)
      def withHttpProtocolOptions(__v: io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions): AutoHttpConfig = copy(httpProtocolOptions = Option(__v))
      def getHttp2ProtocolOptions: io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions = http2ProtocolOptions.getOrElse(io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions.defaultInstance)
      def clearHttp2ProtocolOptions: AutoHttpConfig = copy(http2ProtocolOptions = _root_.scala.None)
      def withHttp2ProtocolOptions(__v: io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions): AutoHttpConfig = copy(http2ProtocolOptions = Option(__v))
      def getHttp3ProtocolOptions: io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions = http3ProtocolOptions.getOrElse(io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions.defaultInstance)
      def clearHttp3ProtocolOptions: AutoHttpConfig = copy(http3ProtocolOptions = _root_.scala.None)
      def withHttp3ProtocolOptions(__v: io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions): AutoHttpConfig = copy(http3ProtocolOptions = Option(__v))
      def getAlternateProtocolsCacheOptions: io.envoyproxy.envoy.config.core.v3.AlternateProtocolsCacheOptions = alternateProtocolsCacheOptions.getOrElse(io.envoyproxy.envoy.config.core.v3.AlternateProtocolsCacheOptions.defaultInstance)
      def clearAlternateProtocolsCacheOptions: AutoHttpConfig = copy(alternateProtocolsCacheOptions = _root_.scala.None)
      def withAlternateProtocolsCacheOptions(__v: io.envoyproxy.envoy.config.core.v3.AlternateProtocolsCacheOptions): AutoHttpConfig = copy(alternateProtocolsCacheOptions = Option(__v))
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => httpProtocolOptions.orNull
          case 2 => http2ProtocolOptions.orNull
          case 3 => http3ProtocolOptions.orNull
          case 4 => alternateProtocolsCacheOptions.orNull
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => httpProtocolOptions.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 2 => http2ProtocolOptions.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 3 => http3ProtocolOptions.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 4 => alternateProtocolsCacheOptions.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig.type = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig
      // @@protoc_insertion_point(GeneratedMessage[envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig])
  }
  
  object AutoHttpConfig extends scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig = {
      var __httpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions] = _root_.scala.None
      var __http2ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions] = _root_.scala.None
      var __http3ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions] = _root_.scala.None
      var __alternateProtocolsCacheOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.AlternateProtocolsCacheOptions] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 10 =>
            __httpProtocolOptions = Option(__httpProtocolOptions.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 18 =>
            __http2ProtocolOptions = Option(__http2ProtocolOptions.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 26 =>
            __http3ProtocolOptions = Option(__http3ProtocolOptions.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 34 =>
            __alternateProtocolsCacheOptions = Option(__alternateProtocolsCacheOptions.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.AlternateProtocolsCacheOptions](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig(
          httpProtocolOptions = __httpProtocolOptions,
          http2ProtocolOptions = __http2ProtocolOptions,
          http3ProtocolOptions = __http3ProtocolOptions,
          alternateProtocolsCacheOptions = __alternateProtocolsCacheOptions,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig(
          httpProtocolOptions = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions]]),
          http2ProtocolOptions = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions]]),
          http3ProtocolOptions = __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions]]),
          alternateProtocolsCacheOptions = __fieldsMap.get(scalaDescriptor.findFieldByNumber(4).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.config.core.v3.AlternateProtocolsCacheOptions]])
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.javaDescriptor.getNestedTypes().get(2)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.scalaDescriptor.nestedMessages(2)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 1 => __out = io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions
        case 2 => __out = io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions
        case 3 => __out = io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions
        case 4 => __out = io.envoyproxy.envoy.config.core.v3.AlternateProtocolsCacheOptions
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig(
      httpProtocolOptions = _root_.scala.None,
      http2ProtocolOptions = _root_.scala.None,
      http3ProtocolOptions = _root_.scala.None,
      alternateProtocolsCacheOptions = _root_.scala.None
    )
    implicit class AutoHttpConfigLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig](_l) {
      def httpProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions] = field(_.getHttpProtocolOptions)((c_, f_) => c_.copy(httpProtocolOptions = Option(f_)))
      def optionalHttpProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions]] = field(_.httpProtocolOptions)((c_, f_) => c_.copy(httpProtocolOptions = f_))
      def http2ProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions] = field(_.getHttp2ProtocolOptions)((c_, f_) => c_.copy(http2ProtocolOptions = Option(f_)))
      def optionalHttp2ProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions]] = field(_.http2ProtocolOptions)((c_, f_) => c_.copy(http2ProtocolOptions = f_))
      def http3ProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions] = field(_.getHttp3ProtocolOptions)((c_, f_) => c_.copy(http3ProtocolOptions = Option(f_)))
      def optionalHttp3ProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions]] = field(_.http3ProtocolOptions)((c_, f_) => c_.copy(http3ProtocolOptions = f_))
      def alternateProtocolsCacheOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.config.core.v3.AlternateProtocolsCacheOptions] = field(_.getAlternateProtocolsCacheOptions)((c_, f_) => c_.copy(alternateProtocolsCacheOptions = Option(f_)))
      def optionalAlternateProtocolsCacheOptions: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.AlternateProtocolsCacheOptions]] = field(_.alternateProtocolsCacheOptions)((c_, f_) => c_.copy(alternateProtocolsCacheOptions = f_))
    }
    final val HTTP_PROTOCOL_OPTIONS_FIELD_NUMBER = 1
    final val HTTP2_PROTOCOL_OPTIONS_FIELD_NUMBER = 2
    final val HTTP3_PROTOCOL_OPTIONS_FIELD_NUMBER = 3
    final val ALTERNATE_PROTOCOLS_CACHE_OPTIONS_FIELD_NUMBER = 4
    def of(
      httpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http1ProtocolOptions],
      http2ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http2ProtocolOptions],
      http3ProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.Http3ProtocolOptions],
      alternateProtocolsCacheOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.AlternateProtocolsCacheOptions]
    ): _root_.io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig = _root_.io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig(
      httpProtocolOptions,
      http2ProtocolOptions,
      http3ProtocolOptions,
      alternateProtocolsCacheOptions
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig])
  }
  
  implicit class HttpProtocolOptionsLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions](_l) {
    def commonHttpProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions] = field(_.getCommonHttpProtocolOptions)((c_, f_) => c_.copy(commonHttpProtocolOptions = Option(f_)))
    def optionalCommonHttpProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions]] = field(_.commonHttpProtocolOptions)((c_, f_) => c_.copy(commonHttpProtocolOptions = f_))
    def upstreamHttpProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.config.core.v3.UpstreamHttpProtocolOptions] = field(_.getUpstreamHttpProtocolOptions)((c_, f_) => c_.copy(upstreamHttpProtocolOptions = Option(f_)))
    def optionalUpstreamHttpProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.UpstreamHttpProtocolOptions]] = field(_.upstreamHttpProtocolOptions)((c_, f_) => c_.copy(upstreamHttpProtocolOptions = f_))
    def explicitHttpConfig: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig] = field(_.getExplicitHttpConfig)((c_, f_) => c_.copy(upstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.ExplicitHttpConfig(f_)))
    def useDownstreamProtocolConfig: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig] = field(_.getUseDownstreamProtocolConfig)((c_, f_) => c_.copy(upstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.UseDownstreamProtocolConfig(f_)))
    def autoConfig: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig] = field(_.getAutoConfig)((c_, f_) => c_.copy(upstreamProtocolOptions = io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions.AutoConfig(f_)))
    def upstreamProtocolOptions: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions] = field(_.upstreamProtocolOptions)((c_, f_) => c_.copy(upstreamProtocolOptions = f_))
  }
  final val COMMON_HTTP_PROTOCOL_OPTIONS_FIELD_NUMBER = 1
  final val UPSTREAM_HTTP_PROTOCOL_OPTIONS_FIELD_NUMBER = 2
  final val EXPLICIT_HTTP_CONFIG_FIELD_NUMBER = 3
  final val USE_DOWNSTREAM_PROTOCOL_CONFIG_FIELD_NUMBER = 4
  final val AUTO_CONFIG_FIELD_NUMBER = 5
  def of(
    commonHttpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.HttpProtocolOptions],
    upstreamHttpProtocolOptions: _root_.scala.Option[io.envoyproxy.envoy.config.core.v3.UpstreamHttpProtocolOptions],
    upstreamProtocolOptions: io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions.UpstreamProtocolOptions
  ): _root_.io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions = _root_.io.envoyproxy.envoy.extensions.upstreams.http.v3.HttpProtocolOptions(
    commonHttpProtocolOptions,
    upstreamHttpProtocolOptions,
    upstreamProtocolOptions
  )
  // @@protoc_insertion_point(GeneratedMessageCompanion[envoy.extensions.upstreams.http.v3.HttpProtocolOptions])
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy