4
4
5
5
use crate :: sealed:: Sealed ;
6
6
use crate :: sys_common:: AsInner ;
7
+ use crate :: time:: Duration ;
7
8
use crate :: { io, net} ;
8
9
9
10
/// Os-specific extensions for [`TcpStream`]
@@ -60,6 +61,8 @@ pub trait TcpStreamExt: Sealed {
60
61
/// connections without data to process.
61
62
/// Contrary to other platforms `SO_ACCEPTFILTER` feature equivalent, there is
62
63
/// 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.
63
66
///
64
67
/// See [`man 7 tcp`](https://man7.org/linux/man-pages/man7/tcp.7.html)
65
68
///
@@ -72,11 +75,11 @@ pub trait TcpStreamExt: Sealed {
72
75
///
73
76
/// let stream = TcpStream::connect("127.0.0.1:8080")
74
77
/// .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");
76
79
/// ```
77
80
#[ unstable( feature = "tcp_deferaccept" , issue = "119639" ) ]
78
81
#[ cfg( target_os = "linux" ) ]
79
- fn set_deferaccept ( & self , accept : u32 ) -> io:: Result < ( ) > ;
82
+ fn set_deferaccept ( & self , accept : Duration ) -> io:: Result < ( ) > ;
80
83
81
84
/// Gets the accept delay value (in seconds) of the `TCP_DEFER_ACCEPT` option.
82
85
///
@@ -91,12 +94,12 @@ pub trait TcpStreamExt: Sealed {
91
94
///
92
95
/// let stream = TcpStream::connect("127.0.0.1:8080")
93
96
/// .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) );
96
99
/// ```
97
100
#[ unstable( feature = "tcp_deferaccept" , issue = "119639" ) ]
98
101
#[ cfg( target_os = "linux" ) ]
99
- fn deferaccept ( & self ) -> io:: Result < u32 > ;
102
+ fn deferaccept ( & self ) -> io:: Result < Duration > ;
100
103
}
101
104
102
105
#[ unstable( feature = "tcp_quickack" , issue = "96256" ) ]
@@ -113,12 +116,12 @@ impl TcpStreamExt for net::TcpStream {
113
116
}
114
117
115
118
#[ cfg( target_os = "linux" ) ]
116
- fn set_deferaccept ( & self , accept : u32 ) -> io:: Result < ( ) > {
119
+ fn set_deferaccept ( & self , accept : Duration ) -> io:: Result < ( ) > {
117
120
self . as_inner ( ) . as_inner ( ) . set_deferaccept ( accept)
118
121
}
119
122
120
123
#[ cfg( target_os = "linux" ) ]
121
- fn deferaccept ( & self ) -> io:: Result < u32 > {
124
+ fn deferaccept ( & self ) -> io:: Result < Duration > {
122
125
self . as_inner ( ) . as_inner ( ) . deferaccept ( )
123
126
}
124
127
}
0 commit comments