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 {