TransportParameters

Struct TransportParameters 

Source
pub struct TransportParameters { /* private fields */ }
Expand description

Transport parameters used to negotiate connection-level preferences between peers

Implementations§

Source§

impl TransportParameters

Source

pub fn nat_traversal_config(&self) -> Option<&NatTraversalConfig>

Get the NAT traversal configuration for this connection

This is a public accessor method for tests and external code that need to examine the negotiated NAT traversal parameters.

Source

pub fn supports_rfc_nat_traversal(&self) -> bool

Check if RFC-compliant NAT traversal frames are supported

Returns true if both endpoints support RFC NAT traversal

Source

pub fn pqc_algorithms(&self) -> Option<&PqcAlgorithms>

Get the PQC algorithms configuration for this connection

This is a public accessor method for tests and external code that need to examine the negotiated PQC algorithm support.

Source§

impl TransportParameters

Source

pub fn write<W: BufMut>(&self, w: &mut W)

Encode TransportParameters into buffer

Source

pub fn read<R: Buf>(side: Side, r: &mut R) -> Result<Self, Error>

Decode TransportParameters from buffer

Source

pub fn negotiated_nat_concurrency_limit( &self, local_config: &NatTraversalConfig, ) -> Option<u64>

Negotiate effective NAT traversal concurrency limit for this connection

Returns the effective concurrency limit based on local and remote NAT traversal configurations. For P2P connections where both peers have ServerSupport, returns the minimum of the two limits. For traditional client/server, returns the server’s limit. Returns None if NAT traversal is not configured.

§Examples
use ant_quic::VarInt;
use ant_quic::TransportParameters;
use ant_quic::NatTraversalConfig;

// P2P: Both peers have ServerSupport - use minimum
let local = NatTraversalConfig::ServerSupport {
    concurrency_limit: VarInt::from_u32(10),
};
let mut remote_params = TransportParameters::default();
remote_params.nat_traversal = Some(NatTraversalConfig::ServerSupport {
    concurrency_limit: VarInt::from_u32(5),
});
assert_eq!(remote_params.negotiated_nat_concurrency_limit(&local), Some(5));
Source

pub fn supports_bidirectional_nat_traversal(&self) -> bool

Check if this connection supports bidirectional NAT traversal (P2P)

Returns true if the remote peer sent ServerSupport, indicating they can accept NAT traversal path validation requests. This is used to detect P2P connections where both peers have equal capabilities.

§Examples
use ant_quic::VarInt;
use ant_quic::TransportParameters;
use ant_quic::NatTraversalConfig;

let mut params = TransportParameters::default();
params.nat_traversal = Some(NatTraversalConfig::ServerSupport {
    concurrency_limit: VarInt::from_u32(5),
});
assert!(params.supports_bidirectional_nat_traversal());

let mut client_params = TransportParameters::default();
client_params.nat_traversal = Some(NatTraversalConfig::ClientSupport);
assert!(!client_params.supports_bidirectional_nat_traversal());

Trait Implementations§

Source§

impl Clone for TransportParameters

Source§

fn clone(&self) -> TransportParameters

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for TransportParameters

Source§

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

Formats the value using the given formatter. Read more
Source§

impl PartialEq for TransportParameters

Source§

fn eq(&self, other: &TransportParameters) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for TransportParameters

Source§

impl StructuralPartialEq for TransportParameters

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

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

Source§

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. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

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

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more