def fromSubConfig()

in http-core/src/main/scala/org/apache/pekko/http/scaladsl/settings/Http2ServerSettings.scala [162:259]


    def fromSubConfig(root: Config, c: Config): Http2ServerSettingsImpl = Http2ServerSettingsImpl(
      maxConcurrentStreams = c.getInt("max-concurrent-streams"),
      requestEntityChunkSize = c.getIntBytes("request-entity-chunk-size"),
      incomingConnectionLevelBufferSize = c.getIntBytes("incoming-connection-level-buffer-size"),
      incomingStreamLevelBufferSize = c.getIntBytes("incoming-stream-level-buffer-size"),
      minCollectStrictEntitySize = c.getIntBytes("min-collect-strict-entity-size"),
      outgoingControlFrameBufferSize = c.getIntBytes("outgoing-control-frame-buffer-size"),
      logFrames = c.getBoolean("log-frames"),
      pingInterval = c.getFiniteDuration("ping-interval"),
      pingTimeout = c.getFiniteDuration("ping-timeout"),
      frameTypeThrottleFrameTypes = c.getStringList("frame-type-throttle.frame-types").asScala.toSet,
      frameTypeThrottleCost = c.getInt("frame-type-throttle.cost"),
      frameTypeThrottleBurst = c.getInt("frame-type-throttle.burst"),
      frameTypeThrottleInterval = c.getFiniteDuration("frame-type-throttle.interval"),
      None // no possibility to configure internal settings with config
    )
  }
}

/**
 * Placeholder for any kind of internal settings that might be interesting for HTTP/2 (like custom strategies)
 */
@InternalApi
@DoNotInherit
private[http] trait Http2InternalClientSettings

@ApiMayChange
@DoNotInherit
trait Http2ClientSettings extends javadsl.settings.Http2ClientSettings with Http2CommonSettings {
  self: Http2ClientSettings.Http2ClientSettingsImpl =>
  def requestEntityChunkSize: Int
  override def withRequestEntityChunkSize(newValue: Int): Http2ClientSettings = copy(requestEntityChunkSize = newValue)

  def incomingConnectionLevelBufferSize: Int
  override def withIncomingConnectionLevelBufferSize(newValue: Int): Http2ClientSettings =
    copy(incomingConnectionLevelBufferSize = newValue)

  def incomingStreamLevelBufferSize: Int
  override def withIncomingStreamLevelBufferSize(newValue: Int): Http2ClientSettings =
    copy(incomingStreamLevelBufferSize = newValue)

  def minCollectStrictEntitySize: Int = 0 // not yet supported on client side

  def maxConcurrentStreams: Int
  override def withMaxConcurrentStreams(newValue: Int): Http2ClientSettings = copy(maxConcurrentStreams = newValue)

  def outgoingControlFrameBufferSize: Int
  override def withOutgoingControlFrameBufferSize(newValue: Int): Http2ClientSettings =
    copy(outgoingControlFrameBufferSize = newValue)

  def logFrames: Boolean
  override def withLogFrames(shouldLog: Boolean): Http2ClientSettings = copy(logFrames = shouldLog)

  def pingInterval: FiniteDuration
  def withPingInterval(time: FiniteDuration): Http2ClientSettings = copy(pingInterval = time)

  def pingTimeout: FiniteDuration
  def withPingTimeout(timeout: FiniteDuration): Http2ClientSettings = copy(pingTimeout = timeout)

  def maxPersistentAttempts: Int
  override def withMaxPersistentAttempts(max: Int): Http2ClientSettings = copy(maxPersistentAttempts = max)

  def completionTimeout: FiniteDuration
  def withCompletionTimeout(timeout: FiniteDuration): Http2ClientSettings = copy(completionTimeout = timeout)

  def baseConnectionBackoff: FiniteDuration
  def withBaseConnectionBackoff(backoff: FiniteDuration): Http2ClientSettings = copy(baseConnectionBackoff = backoff)

  def maxConnectionBackoff: FiniteDuration
  def withMaxConnectionBackoff(backoff: FiniteDuration): Http2ClientSettings = copy(maxConnectionBackoff = backoff)

  @InternalApi
  private[http] def internalSettings: Option[Http2InternalClientSettings]
  @InternalApi
  private[http] def withInternalSettings(newValue: Http2InternalClientSettings): Http2ClientSettings =
    copy(internalSettings = Some(newValue))
}

@ApiMayChange
object Http2ClientSettings extends SettingsCompanion[Http2ClientSettings] {
  def apply(config: Config): Http2ClientSettings = Http2ClientSettingsImpl(config)
  def apply(configOverrides: String): Http2ClientSettings = Http2ClientSettingsImpl(configOverrides)

  private[http] case class Http2ClientSettingsImpl(
      maxConcurrentStreams: Int,
      requestEntityChunkSize: Int,
      incomingConnectionLevelBufferSize: Int,
      incomingStreamLevelBufferSize: Int,
      outgoingControlFrameBufferSize: Int,
      logFrames: Boolean,
      pingInterval: FiniteDuration,
      pingTimeout: FiniteDuration,
      maxPersistentAttempts: Int,
      completionTimeout: FiniteDuration,
      baseConnectionBackoff: FiniteDuration,
      maxConnectionBackoff: FiniteDuration,
      internalSettings: Option[Http2InternalClientSettings])
      extends Http2ClientSettings with javadsl.settings.Http2ClientSettings {