44
55use crate :: sealed:: Sealed ;
66use crate :: sys_common:: AsInner ;
7+ use crate :: time:: Duration ;
78use crate :: { io, net} ;
89
910/// Os-specific extensions for [`TcpStream`]
@@ -60,6 +61,8 @@ pub trait TcpStreamExt: Sealed {
6061 /// connections without data to process.
6162 /// Contrary to other platforms `SO_ACCEPTFILTER` feature equivalent, there is
6263 /// no necessity to set it after the `listen` call.
64+ /// Note that the delay is expressed as Duration from user's perspective
65+ /// the call rounds it to its nearest second.
6366 ///
6467 /// See [`man 7 tcp`](https://man7.org/linux/man-pages/man7/tcp.7.html)
6568 ///
@@ -72,11 +75,11 @@ pub trait TcpStreamExt: Sealed {
7275 ///
7376 /// let stream = TcpStream::connect("127.0.0.1:8080")
7477 /// .expect("Couldn't connect to the server...");
75- /// stream.set_deferaccept(1 ).expect("set_deferaccept call failed");
78+ /// stream.set_deferaccept(Duration::from_secs(1u64) ).expect("set_deferaccept call failed");
7679 /// ```
7780 #[ unstable( feature = "tcp_deferaccept" , issue = "119639" ) ]
7881 #[ cfg( target_os = "linux" ) ]
79- fn set_deferaccept ( & self , accept : u32 ) -> io:: Result < ( ) > ;
82+ fn set_deferaccept ( & self , accept : Duration ) -> io:: Result < ( ) > ;
8083
8184 /// Gets the accept delay value (in seconds) of the `TCP_DEFER_ACCEPT` option.
8285 ///
@@ -91,12 +94,12 @@ pub trait TcpStreamExt: Sealed {
9194 ///
9295 /// let stream = TcpStream::connect("127.0.0.1:8080")
9396 /// .expect("Couldn't connect to the server...");
94- /// stream.set_deferaccept(1 ).expect("set_deferaccept call failed");
95- /// assert_eq!(stream.deferaccept().unwrap_or(0 ), 1 );
97+ /// stream.set_deferaccept(Duration::from_secs(1u64) ).expect("set_deferaccept call failed");
98+ /// assert_eq!(stream.deferaccept().unwrap( ), Duration::from_secs(1u64) );
9699 /// ```
97100 #[ unstable( feature = "tcp_deferaccept" , issue = "119639" ) ]
98101 #[ cfg( target_os = "linux" ) ]
99- fn deferaccept ( & self ) -> io:: Result < u32 > ;
102+ fn deferaccept ( & self ) -> io:: Result < Duration > ;
100103}
101104
102105#[ unstable( feature = "tcp_quickack" , issue = "96256" ) ]
@@ -113,12 +116,12 @@ impl TcpStreamExt for net::TcpStream {
113116 }
114117
115118 #[ cfg( target_os = "linux" ) ]
116- fn set_deferaccept ( & self , accept : u32 ) -> io:: Result < ( ) > {
119+ fn set_deferaccept ( & self , accept : Duration ) -> io:: Result < ( ) > {
117120 self . as_inner ( ) . as_inner ( ) . set_deferaccept ( accept)
118121 }
119122
120123 #[ cfg( target_os = "linux" ) ]
121- fn deferaccept ( & self ) -> io:: Result < u32 > {
124+ fn deferaccept ( & self ) -> io:: Result < Duration > {
122125 self . as_inner ( ) . as_inner ( ) . deferaccept ( )
123126 }
124127}
0 commit comments