diff options
| author | David Carlier <devnexen@gmail.com> | 2024-01-05 21:22:42 +0000 |
|---|---|---|
| committer | David Carlier <devnexen@gmail.com> | 2024-02-21 20:59:15 +0000 |
| commit | 85bf4439e614f2971523e380b69bb3be4c995894 (patch) | |
| tree | fb334fd9cd79fc481ceaa16bc1eef632a7692b1b /library/std/src/os/net/linux_ext/tests.rs | |
| parent | f8131a48a46ac3bc8a3d0fe0477055b132cffdc3 (diff) | |
| download | rust-85bf4439e614f2971523e380b69bb3be4c995894.tar.gz rust-85bf4439e614f2971523e380b69bb3be4c995894.zip | |
os::net: expanding TcpStreamExt for Linux with `tcp_deferaccept`.
allows for socket to process only when there is data to process, the option sets a number of seconds until the data is ready.
Diffstat (limited to 'library/std/src/os/net/linux_ext/tests.rs')
| -rw-r--r-- | library/std/src/os/net/linux_ext/tests.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/library/std/src/os/net/linux_ext/tests.rs b/library/std/src/os/net/linux_ext/tests.rs index 2db4deed036..f8dbbfc18e2 100644 --- a/library/std/src/os/net/linux_ext/tests.rs +++ b/library/std/src/os/net/linux_ext/tests.rs @@ -26,3 +26,29 @@ fn quickack() { t!(stream.set_quickack(false)); assert_eq!(false, t!(stream.quickack())); } + +#[test] +#[cfg(target_os = "linux")] +fn deferaccept() { + use crate::{ + net::{test::next_test_ip4, TcpListener, TcpStream}, + os::net::linux_ext::tcp::TcpStreamExt, + }; + + macro_rules! t { + ($e:expr) => { + match $e { + Ok(t) => t, + Err(e) => panic!("received error for `{}`: {}", stringify!($e), e), + } + }; + } + + let addr = next_test_ip4(); + let _listener = t!(TcpListener::bind(&addr)); + let stream = t!(TcpStream::connect(&("localhost", addr.port()))); + stream.set_deferaccept(1).expect("set_deferaccept failed"); + assert_eq!(stream.deferaccept().unwrap(), 1); + stream.set_deferaccept(0).expect("set_deferaccept failed"); + assert_eq!(stream.deferaccept().unwrap(), 0); +} |
