Lines
100 %
Functions
50 %
Branches
//! KIST-related parameters.
/// A set of parameters derived from the consensus document,
/// controlling the KIST behavior of channels.
#[derive(Debug, Clone, Copy, PartialEq, amplify::Getters)]
pub struct KistParams {
/// Whether KIST is enabled.
#[getter(as_copy)]
kist_enabled: KistMode,
/// The value to set for the [`TCP_NOTSENT_LOWAT`] socket option
/// (on platforms that support it)
/// if the `KistMode` is [`TcpNotSentLowat`](KistMode::TcpNotSentLowat).
///
/// [`TCP_NOTSENT_LOWAT`]: https://lwn.net/Articles/560082/
tcp_notsent_lowat: u32,
}
impl KistParams {
/// Create a new `KistParams` from the given `KistMode` and options.
pub fn new(kist_enabled: KistMode, tcp_notsent_lowat: u32) -> Self {
Self {
kist_enabled,
tcp_notsent_lowat,
/// A set of parameters, derived from the consensus document,
/// specifying the desired KIST behavior.
#[derive(Debug, Clone, Copy, Eq, PartialEq, Ord, PartialOrd)]
#[non_exhaustive]
pub enum KistMode {
/// KIST using TCP_NOTSENT_LOWAT.
TcpNotSentLowat = 1,
/// KIST is disabled.
Disabled = 0,