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
impl ClientConfig
sourcepub fn new<S: Into<String>>(
addr: S,
server_addr: S,
num_receive_streams: u32,
num_send_streams: u32
) -> Self
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
sourcepub fn with_keep_alive_interval(&mut self, duration: Duration) -> &mut Self
pub fn with_keep_alive_interval(&mut self, duration: Duration) -> &mut Self
Set the keep alive interval
sourcepub fn with_idle_timeout(&mut self, duration: Duration) -> &mut Self
pub fn with_idle_timeout(&mut self, duration: Duration) -> &mut Self
Set the idle timeout
sourcepub fn with_alpn_protocols(&mut self, protocols: &[&[u8]]) -> &mut Self
pub fn with_alpn_protocols(&mut self, protocols: &[&[u8]]) -> &mut Self
Set the ALPN protocols
Trait Implementations§
source§impl Clone for ClientConfig
impl Clone for ClientConfig
source§fn clone(&self) -> ClientConfig
fn clone(&self) -> ClientConfig
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ClientConfig
impl Debug for ClientConfig
source§impl PartialEq<ClientConfig> for ClientConfig
impl PartialEq<ClientConfig> for ClientConfig
source§fn eq(&self, other: &ClientConfig) -> bool
fn eq(&self, other: &ClientConfig) -> bool
self
and other
values to be equal, and is used
by ==
.impl Eq for ClientConfig
impl StructuralEq for ClientConfig
impl StructuralPartialEq for ClientConfig
Auto Trait Implementations§
impl RefUnwindSafe for ClientConfig
impl Send for ClientConfig
impl Sync for ClientConfig
impl Unpin for ClientConfig
impl UnwindSafe for ClientConfig
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.