Struct durian::ClientConfig

source ·
pub struct ClientConfig {
    pub addr: String,
    pub server_addr: String,
    pub num_receive_streams: u32,
    pub num_send_streams: u32,
    pub keep_alive_interval: Option<Duration>,
    pub idle_timeout: Option<Duration>,
    pub alpn_protocols: Option<Vec<Vec<u8>>>,
}
Expand description

Client configuration for initiating a connection from a client to a server via PacketManager::init_client()

Fields§

§addr: String

Socket address of the client (hostname:port) (e.g. “127.0.0.1:5001”)

§server_addr: String

Socket address of the server to connect to (hostname:port) (e.g. “127.0.0.1:5000”)

§num_receive_streams: u32

Number of receive streams to accept from server to client. Must be equal to number of receive packets registered through PacketManager::register_receive_packet()

§num_send_streams: u32

Number of send streams to open from client to server. Must be equal to number of send packets registered through PacketManager::register_send_packet()

§keep_alive_interval: Option<Duration>

Period of inactivity before sending a keep-alive packet

Keep-alive packets prevent an inactive but otherwise healthy connection from timing out.

None to disable, which is the default. Only one side of any given connection needs keep-alive enabled for the connection to be preserved. Must be set lower than the idle_timeout of both peers to be effective.

§idle_timeout: Option<Duration>

Maximum duration of inactivity to accept before timing out the connection. The true idle timeout is the minimum of this and the peer’s own max idle timeout. Defaults to 60 seconds. None represents an infinite timeout.

IMPORTANT: In the case of clients disconnecting abruptly, i.e. your application cannot call PacketManager::close_connection() or PacketManager::finish_connection() gracefully, the true idle timeout will help to remove disconnected clients from the connection queue, thus allowing them to reconnect after that timeout frame.

WARNING: If a peer or its network path malfunctions or acts maliciously, an infinite idle timeout can result in permanently hung futures!

§alpn_protocols: Option<Vec<Vec<u8>>>

Protocols to send to server if applicable.

Example:

use durian::ServerConfig;

let mut config = ServerConfig::new("127.0.0.1:5000", 0, None, 2, 2);
config.with_alpn_protocols(&[b"hq-29"]);

Implementations§

source§

impl ClientConfig

source

pub fn new<S: Into<String>>( addr: S, server_addr: S, num_receive_streams: u32, num_send_streams: u32 ) -> Self

Construct and return a new ClientConfig

source

pub fn with_keep_alive_interval(&mut self, duration: Duration) -> &mut Self

Set the keep alive interval

source

pub fn with_idle_timeout(&mut self, duration: Duration) -> &mut Self

Set the idle timeout

source

pub fn with_alpn_protocols(&mut self, protocols: &[&[u8]]) -> &mut Self

Set the ALPN protocols

Trait Implementations§

source§

impl Clone for ClientConfig

source§

fn clone(&self) -> ClientConfig

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 ClientConfig

source§

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

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

impl PartialEq<ClientConfig> for ClientConfig

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for ClientConfig

source§

impl StructuralEq for ClientConfig

source§

impl StructuralPartialEq for ClientConfig

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<Q, K> Equivalent<K> for Qwhere 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
§

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

§

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

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