Struct makiko::ChannelConfig

source ·
#[non_exhaustive]
pub struct ChannelConfig { pub recv_window_max: usize, pub recv_packet_len_max: usize, }
Expand description

Configuration of a Channel (or a Session).

You should start from the default instance, which has reasonable default configuration, and modify it according to your needs. You may also find the method ChannelConfig::with() syntactically convenient.

This struct is #[non_exhaustive], so we may add more fields without breaking backward compatibility.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§recv_window_max: usize

Maximum size of the receive window (in bytes).

SSH channels implement flow control to limit the amount of data in flight. The “window” is the maximum number of bytes that the sender can transmit to the receiver. When the window is exhausted, the sender must wait until the sender increments the window, allowing the sender to continue.

Flow control in the two directions (client to server and server to client) is independent and always controlled by the receiver.

If the window size is smaller than the bandwidth-delay product, SSH will not be able to fully utilize the link. However, if the window size is too large, the data for this channel may overwhelm the connection, increasing latency for other channels and non-data messages.

The SSH protocol limits the window size to 2^32 - 1, and we also impose a sane lower bound on this value. If your value exceeds these limits, we will silently clamp it to the allowed range.

§recv_packet_len_max: usize

Maximum size of received packets (in bytes).

Specifies the maximum data packet size that we want to receive from the server. This serves as a hint only: if the server sends us a larger packet, we will happily accept it.

The SSH specification says that you may want to make this value smaller for slow interactive links, but in most cases, you can keep it at its default value.

The SSH protocol limits the packet size to 2^32 - 1, and we also impose a sane lower bound on this value. If your value exceeds these limits, we will silently clamp it to the allowed range.

Implementations§

source§

impl ChannelConfig

source

pub fn with<F: FnOnce(&mut Self)>(self, f: F) -> Self

Update the configuration in pseudo-builder pattern style.

This method applies your closure to self and returns the mutated configuration.

Trait Implementations§

source§

impl Clone for ChannelConfig

source§

fn clone(&self) -> ChannelConfig

Returns a copy 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 ChannelConfig

source§

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

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

impl Default for ChannelConfig

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere 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<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.
§

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

§

fn vzip(self) -> V