QuicOptions.Builder

class QuicOptions.Builder


QuicOptions 的构建器。

摘要

公共函数

QuicOptions.Builder!

将主机添加到 QUIC 许可名单。

QuicOptions.Builder!

添加一个 QUIC 标记,以在 QUIC 握手的连接选项中发送,该标记仅影响客户端。

QuicOptions.Builder!

添加了一个 QUIC 标记,用于在 QUIC 握手的连接选项中发送。

QuicOptions.Builder!

向要启用的 QUIC 版本列表中添加 QUIC 版本。

QuicOptions.Builder!

设置任意 QUICHE 标志。

QuicOptions!

根据此构建器中的值创建并返回最终的 QuicOptions 实例。

QuicOptions.Builder!

设置是否应在 IP 地址更改时关闭 QUIC 会话。

QuicOptions.Builder!
@QuicOptions.Experimental
delayJobsWithAvailableSpdySession(
    delayJobsWithAvailableSpdySession: Boolean
)

设置 Cronet 是否应等待主路径(通常为 QUIC)准备就绪,即使存在可立即就绪的到达服务器的辅助路径 (SPDY / HTTP2) 也是如此。

QuicOptions.Builder!

设置是否应启用 0-RTT TLS。

QuicOptions.Builder!

设置是否应在 IP 地址更改时关闭 QUIC 会话。

QuicOptions.Builder!
@QuicOptions.Experimental
increaseBrokenServicePeriodExponentially(
    increaseBrokenServicePeriodExponentially: Boolean
)

设置中断服务器时段是否应呈指数级缩放。

QuicOptions.Builder!

设置是否应在不使用任何 alt-svc 服务器的情况下重试因 QUIC 协议错误而失败的请求。

QuicOptions.Builder!

设置连接 SSL 握手的超时时间。

QuicOptions.Builder!
setHandshakeUserAgent(handshakeUserAgent: String!)

设置要在 HTTP 请求之外使用的用户代理(例如用于 QUIC 握手)。

QuicOptions.Builder!
@RequiresApi(value = VERSION_CODES.O)
setIdleConnectionTimeout(idleConnectionTimeout: Duration)

setIdleConnectionTimeoutSeconds 相同,但使用 java.time.Duration

QuicOptions.Builder!
setIdleConnectionTimeoutSeconds(idleConnectionTimeoutSeconds: Long)

设置连接的最大空闲时间。

QuicOptions.Builder!
setInMemoryServerConfigsCacheSize(inMemoryServerConfigsCacheSize: Int)

设置应在内存中保留多少服务器配置(元数据,例如替代服务列表、是否支持 QUIC 等)。

QuicOptions.Builder!
@QuicOptions.Experimental
setInitialBrokenServicePeriodSeconds(
    initialBrokenServicePeriodSeconds: Long
)

设置初始时间,在此时间之后,如果发现服务器的 QUIC 支持出现故障,Cronet 不应尝试对给定服务器使用 QUIC。

QuicOptions.Builder!
@QuicOptions.Experimental
setPreCryptoHandshakeIdleTimeoutSeconds(
    preCryptoHandshakeIdleTimeoutSeconds: Long
)

设置尚未完成 SSL 握手的连接的最大空闲时间。

QuicOptions.Builder!
@QuicOptions.Experimental
setRetransmittableOnWireTimeoutMillis(
    retransmittableOnWireTimeoutMillis: Long
)

设置线路上的数据包之间所需的最大时间。

公共函数

addAllowedQuicHost

fun addAllowedQuicHost(quicHost: String!): QuicOptions.Builder!

将主机添加到 QUIC 许可名单。

如果未指定任何主机,则停用按主机列入许可名单的功能。否则,Cronet 仅在与许可名单中的主机通信时使用 QUIC。

返回
QuicOptions.Builder!

用于链式调用的构建器

addClientConnectionOption

@QuicOptions.QuichePassthroughOption
fun addClientConnectionOption(clientConnectionOption: String!): QuicOptions.Builder!

添加一个 QUIC 标记,以在 QUIC 握手的连接选项中发送,该标记仅影响客户端。

如需了解详情,请参阅 addConnectionOption

addConnectionOption

@QuicOptions.QuichePassthroughOption
fun addConnectionOption(connectionOption: String!): QuicOptions.Builder!

添加了一个 QUIC 标记,用于在 QUIC 握手的连接选项中发送。

QUIC 标记应以不超过四个字母的字符串形式呈现(例如 NBHD)。

由于 QUIC 标记正处于积极开发阶段,并且有些标记仅与服务器相关,因此 Cronet 不会尝试维护所有受支持的 QUIC 标志的完整列表作为 API 的一部分。标志。如需查看 Cronet 和 Google 服务器使用的 QUIC 实现 QUICHE 支持的标志,请点击此处

返回
QuicOptions.Builder!

用于链式调用的构建器

addEnabledQuicVersion

@QuicOptions.QuichePassthroughOption
fun addEnabledQuicVersion(enabledQuicVersion: String!): QuicOptions.Builder!

向要启用的 QUIC 版本列表中添加 QUIC 版本。

如果未指定任何版本,Cronet 将使用默认 QUIC 版本列表。

版本格式由 QUICHE 指定。除了过滤掉已知已过时的值之外,Cronet 不会以任何方式处理版本,只会将它们传递给 QUICHE。

返回
QuicOptions.Builder!

用于链式调用的构建器

addExtraQuicheFlag

@QuicOptions.QuichePassthroughOption
fun addExtraQuicheFlag(extraQuicheFlag: String!): QuicOptions.Builder!

设置任意 QUICHE 标志。标志应以 FLAG_NAME=FLAG_VALUE 格式传递。如需查看完整的标志列表,请参阅 QUICHE 代码库

返回
QuicOptions.Builder!

用于链式调用的构建器

build

fun build(): QuicOptions!

根据此构建器中的值创建并返回最终的 QuicOptions 实例。

closeSessionsOnIpChange

@QuicOptions.Experimental
fun closeSessionsOnIpChange(closeSessionsOnIpChange: Boolean): QuicOptions.Builder!

设置是否应在 IP 地址更改时关闭 QUIC 会话。

请勿与连接迁移(使用 ConnectionMigrationOptions 配置)结合使用。

返回
QuicOptions.Builder!

用于链式调用的构建器

delayJobsWithAvailableSpdySession

@QuicOptions.Experimental
fun delayJobsWithAvailableSpdySession(
    delayJobsWithAvailableSpdySession: Boolean
): QuicOptions.Builder!

设置 Cronet 是否应等待主路径(通常为 QUIC)准备就绪,即使存在可立即就绪的到达服务器的辅助路径 (SPDY / HTTP2) 也是如此。

返回
QuicOptions.Builder!

用于链式调用的构建器

enableTlsZeroRtt

@QuicOptions.Experimental
fun enableTlsZeroRtt(enableTlsZeroRtt: Boolean): QuicOptions.Builder!

设置是否应启用 0-RTT TLS。

0-RTT 是一种性能优化,可避免在恢复与已知服务器的连接时进行额外的往返。

返回
QuicOptions.Builder!

用于链式调用的构建器

goawaySessionsOnIpChange

@QuicOptions.Experimental
fun goawaySessionsOnIpChange(goawaySessionsOnIpChange: Boolean): QuicOptions.Builder!

设置是否应在 IP 地址更改时关闭 QUIC 会话。

请勿与连接迁移(使用 ConnectionMigrationOptions 配置)结合使用。

返回
QuicOptions.Builder!

用于链式调用的构建器

increaseBrokenServicePeriodExponentially

@QuicOptions.Experimental
fun increaseBrokenServicePeriodExponentially(
    increaseBrokenServicePeriodExponentially: Boolean
): QuicOptions.Builder!

设置中断的服务器周期是否应呈指数级缩放。

如果设置为 true,则初始延迟(可通过 setInitialBrokenServicePeriodSeconds 配置)将按指数级缩放,以用于后续重试 (SCALING_FACTOR^NUM_TRIES * delay)。如果设置为 false,则延迟将按线性缩放(SCALING_FACTOR * NUM_TRIES * delay)。

返回
QuicOptions.Builder!

用于链式调用的构建器

retryWithoutAltSvcOnQuicErrors

@QuicOptions.Experimental
fun retryWithoutAltSvcOnQuicErrors(retryWithoutAltSvcOnQuicErrors: Boolean): QuicOptions.Builder!

设置是否应在不使用任何 alt-svc 服务器的情况下重试因 QUIC 协议错误而失败的请求。

返回
QuicOptions.Builder!

用于链式调用的构建器

setCryptoHandshakeTimeoutSeconds

@QuicOptions.Experimental
fun setCryptoHandshakeTimeoutSeconds(cryptoHandshakeTimeoutSeconds: Long): QuicOptions.Builder!

设置连接 SSL 握手的超时时间。

返回
QuicOptions.Builder!

用于链式调用的构建器

setHandshakeUserAgent

fun setHandshakeUserAgent(handshakeUserAgent: String!): QuicOptions.Builder!

设置要在 HTTP 请求之外使用的用户代理(例如用于 QUIC 握手)。

如需为 HTTP 请求设置默认用户代理,请改用 setUserAgent

返回
QuicOptions.Builder!

用于链式调用的构建器

setIdleConnectionTimeout

@RequiresApi(value = VERSION_CODES.O)
fun setIdleConnectionTimeout(idleConnectionTimeout: Duration): QuicOptions.Builder!

setIdleConnectionTimeoutSeconds 相同,但使用 java.time.Duration

返回
QuicOptions.Builder!

用于链式调用的构建器

setIdleConnectionTimeoutSeconds

fun setIdleConnectionTimeoutSeconds(idleConnectionTimeoutSeconds: Long): QuicOptions.Builder!

设置连接的最大空闲时间。空闲超时的实际值是此值与服务器的空闲超时值中的最小值,并在握手期间协商确定。因此,它仅在握手完成后适用。如果在设定的时长内未检测到连接上的任何活动,系统会关闭该连接。

如需了解详情,请参阅 RFC 9114 的第 5.1 节

返回
QuicOptions.Builder!

用于链式调用的构建器

setInMemoryServerConfigsCacheSize

fun setInMemoryServerConfigsCacheSize(inMemoryServerConfigsCacheSize: Int): QuicOptions.Builder!

设置应在内存中保留多少服务器配置(元数据,例如替代服务列表、是否支持 QUIC 等)。

如果设置了存储路径 (setStoragePath),Cronet 还会将服务器配置持久保留在磁盘上。

返回
QuicOptions.Builder!

用于链式调用的构建器

setInitialBrokenServicePeriodSeconds

@QuicOptions.Experimental
fun setInitialBrokenServicePeriodSeconds(
    initialBrokenServicePeriodSeconds: Long
): QuicOptions.Builder!

设置初始时间,在此时间之后,如果发现服务器的 QUIC 支持出现故障,Cronet 不应尝试为给定服务器使用 QUIC。

一旦 Cronet 检测到服务器通告 QUIC 但实际上并不使用 QUIC,就会将该服务器标记为损坏,并在与该服务器通信时在一段时间内不尝试使用 QUIC。一旦 Cronet 达到此点,它将再次尝试使用 QUIC。这是为了平衡短期(如果服务器出现故障,浪费资源尝试 QUIC 是毫无意义的)和长期(故障可能只是暂时的,使用 QUIC 通常是有益的)利益。

每次连续重试失败,延迟时间都会增加。详见 increaseBrokenServicePeriodExponentially

返回
QuicOptions.Builder!

用于链式调用的构建器

setPreCryptoHandshakeIdleTimeoutSeconds

@QuicOptions.Experimental
fun setPreCryptoHandshakeIdleTimeoutSeconds(
    preCryptoHandshakeIdleTimeoutSeconds: Long
): QuicOptions.Builder!

设置尚未完成 SSL 握手的连接的最大空闲时间。

返回
QuicOptions.Builder!

用于链式调用的构建器

setRetransmittableOnWireTimeoutMillis

@QuicOptions.Experimental
fun setRetransmittableOnWireTimeoutMillis(
    retransmittableOnWireTimeoutMillis: Long
): QuicOptions.Builder!

设置线路上的数据包之间的最大预期时间。

当可在线重传时间超过时,Cronet 将使用人工流量探测网络质量。较短的超时时间通常会更快地发现中断或性能下降的路径,但也会消耗更多资源(电量、数据)。

返回
QuicOptions.Builder!

用于链式调用的构建器