跳到主要内容

AckFrequencyConfig

搜索

Struct AckFrequencyConfig 

源代码
pub struct AckFrequencyConfig { /* private fields */ }
展开描述

用于控制对端确认(ACK)频率的参数

本配置中提供的参数会在连接开始时发送给对端,以便其在发送确认时将这些参数考虑在内(每个参数的具体描述中说明了其如何影响确认频率)。

Quinn 的实现遵循第四版 QUIC Acknowledgement Frequency extension 草案。 默认值所表现出的行为与不启用此扩展时略有不同,因为它们改变了乱序数据包的处理方式(详见 AckFrequencyConfig::reordering_threshold)。

实现§

源代码§

impl AckFrequencyConfig

源代码

pub fn ack_eliciting_threshold( &mut self, value: VarInt, ) -> &mut AckFrequencyConfig

我们将请求对端使用的“可触发 ACK”阈值

该阈值表示一个端点在不立即发送 ACK 的情况下,最多可接收的“可触发 ACK”包数量。

对端在收到的“可触发 ACK”包数量超过该阈值时,至少应发送一个 ACK 帧。值为 0 时,接收方会对每一个“可触发 ACK”包立即确认。

默认为 1,表示每隔一个“可触发 ACK”包发送 ACK 帧。

源代码

pub fn max_ack_delay( &mut self, value: Option<Duration>, ) -> &mut AckFrequencyConfig

我们将请求对端使用的 max_ack_delay

该参数表示当“可触发 ACK”阈值尚未达到时,端点在发送 ACK 之前最多等待的时间。

实际生效的 max_ack_delay 会被裁剪:下限为对端的 min_ack_delay 传输参数,上限为当前路径 RTT 与 25ms 中的较大者。

默认为 None,此时将使用对端传输参数中所声明的原始 max_ack_delay

源代码

pub fn reordering_threshold(&mut self, value: VarInt) -> &mut AckFrequencyConfig

我们将请求对端使用的乱序阈值

该阈值表示在不等待 ack_eliciting_threshold 达到上限或 max_ack_delay 超时的情况下,触发端点立即发送 ACK 的乱序包数量。

值为 0 表示乱序包不会触发立即 ACK;值为 1 则对每一个乱序到达的包立即确认(这也是禁用此扩展时的行为)。

建议将该值设置为 TransportConfig::packet_threshold 减一。由于 TransportConfig::packet_threshold 的默认值为 3,因此该值默认为 2。

trait 实现§

源代码§

impl Clone for AckFrequencyConfig

源代码§

fn clone(&self) -> AckFrequencyConfig

返回值的副本。 更多信息
1.0.0 · 源代码§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. 更多信息
源代码§

impl Debug for AckFrequencyConfig

源代码§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

使用给定的格式化器格式化此值。 更多信息
源代码§

impl Default for AckFrequencyConfig

源代码§

fn default() -> AckFrequencyConfig

Returns the “default value” for a type. 更多信息

自动 trait 实现§

blanket 实现§

源代码§

impl<T> Any for T
where T: 'static + ?Sized,

源代码§

fn type_id(&self) -> TypeId

Gets the TypeId of self. 更多信息
源代码§

impl<T> Borrow<T> for T
where T: ?Sized,

源代码§

fn borrow(&self) -> &T

Immutably borrows from an owned value. 更多信息
源代码§

impl<T> BorrowMut<T> for T
where T: ?Sized,

源代码§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. 更多信息
源代码§

impl<T> CloneToUninit for T
where T: Clone,

源代码§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 更多信息
源代码§

impl<T> From<T> for T

源代码§

fn from(t: T) -> T

原样返回该参数。

源代码§

impl<T> Instrument for T

源代码§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. 更多信息
源代码§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. 更多信息
源代码§

impl<T, U> Into<U> for T
where U: From<T>,

源代码§

fn into(self) -> U

调用 U::from(self)

也就是说,此转换行为完全由 From<T> for U 的实现决定。

源代码§

impl<T> ToOwned for T
where T: Clone,

源代码§

type Owned = T

获得所有权后的类型。
源代码§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. 更多信息
源代码§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 更多信息
源代码§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

源代码§

type Error = Infallible

转换出错时返回的类型。
源代码§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

执行转换。
源代码§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

源代码§

type Error = <U as TryFrom<T>>::Error

转换出错时返回的类型。
源代码§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

执行转换。
源代码§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

源代码§

fn vzip(self) -> V

源代码§

impl<T> WithSubscriber for T

源代码§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. 更多信息
源代码§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. 更多信息
源代码§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

源代码§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

源代码§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,