TcpStreamExt in std::os::linux::net - Rust (original) (raw)
Trait TcpStreamExt
1.89.0 · Source
pub trait TcpStreamExt: Sealed {
// Required methods
fn set_quickack(&self, quickack: bool) -> Result<()>;
fn quickack(&self) -> Result<bool>;
fn set_deferaccept(&self, accept: Duration) -> Result<()>;
fn deferaccept(&self) -> Result<Duration>;
}Available on Linux only.
Expand description
1.89.0 · Source
Enable or disable TCP_QUICKACK.
This flag causes Linux to eagerly send ACKs rather than delaying them. Linux may reset this flag after further operations on the socket.
See man 7 tcp andTCP delayed acknowledgementfor more information.
§Examples
use std:🥅:TcpStream;
#[cfg(target_os = "linux")]
use std::os::linux:🥅:TcpStreamExt;
#[cfg(target_os = "android")]
use std::os::android:🥅:TcpStreamExt;
let stream = TcpStream::connect("127.0.0.1:8080")
.expect("Couldn't connect to the server...");
stream.set_quickack(true).expect("set_quickack call failed");1.89.0 · Source
Gets the value of the TCP_QUICKACK option on this socket.
For more information about this option, see TcpStreamExt::set_quickack.
§Examples
use std:🥅:TcpStream;
#[cfg(target_os = "linux")]
use std::os::linux:🥅:TcpStreamExt;
#[cfg(target_os = "android")]
use std::os::android:🥅:TcpStreamExt;
let stream = TcpStream::connect("127.0.0.1:8080")
.expect("Couldn't connect to the server...");
stream.set_quickack(true).expect("set_quickack call failed");
assert_eq!(stream.quickack().unwrap_or(false), true);
🔬This is a nightly-only experimental API. (tcp_deferaccept #119639)
A socket listener will be awakened solely when data arrives.
The accept argument set the maximum delay until the data is available to read, reducing the number of short lived connections without data to process. Contrary to other platforms SO_ACCEPTFILTER feature equivalent, there is no necessity to set it after the listen call. Note that the delay is expressed as Duration from user’s perspective the call rounds it down to the nearest second expressible as a c_int.
See man 7 tcp
§Examples
#![feature(tcp_deferaccept)]
use std:🥅:TcpStream;
use std::os::linux:🥅:TcpStreamExt;
use std::time::Duration;
let stream = TcpStream::connect("127.0.0.1:8080")
.expect("Couldn't connect to the server...");
stream.set_deferaccept(Duration::from_secs(1u64)).expect("set_deferaccept call failed");
🔬This is a nightly-only experimental API. (tcp_deferaccept #119639)
Gets the accept delay value of the TCP_DEFER_ACCEPT option.
For more information about this option, see TcpStreamExt::set_deferaccept.
§Examples
#![feature(tcp_deferaccept)]
use std:🥅:TcpStream;
use std::os::linux:🥅:TcpStreamExt;
use std::time::Duration;
let stream = TcpStream::connect("127.0.0.1:8080")
.expect("Couldn't connect to the server...");
stream.set_deferaccept(Duration::from_secs(1u64)).expect("set_deferaccept call failed");
assert_eq!(stream.deferaccept().unwrap(), Duration::from_secs(1u64));
Available on Linux or Android or Cygwin only.