diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2014-04-25 20:47:49 -0700 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-05-07 23:27:01 -0700 |
| commit | e27f27c8588f5cfa0cd9dfbbdf7609ea2d6818ec (patch) | |
| tree | 25f32daa865ea84163e5f6681f15e876ffb74305 /src/libstd/rt/rtio.rs | |
| parent | e0fcb4eb3d516017c7c2fa8d17e7b8b82bdc065b (diff) | |
| download | rust-e27f27c8588f5cfa0cd9dfbbdf7609ea2d6818ec.tar.gz rust-e27f27c8588f5cfa0cd9dfbbdf7609ea2d6818ec.zip | |
std: Add I/O timeouts to networking objects
These timeouts all follow the same pattern as established by the timeouts on acceptors. There are three methods: set_timeout, set_read_timeout, and set_write_timeout. Each of these sets a point in the future after which operations will time out. Timeouts with cloned objects are a little trickier. Each object is viewed as having its own timeout, unaffected by other objects' timeouts. Additionally, timeouts do not propagate when a stream is cloned or when a cloned stream has its timeouts modified. This commit is just the public interface which will be exposed for timeouts, the implementation will come in later commits.
Diffstat (limited to 'src/libstd/rt/rtio.rs')
| -rw-r--r-- | src/libstd/rt/rtio.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libstd/rt/rtio.rs b/src/libstd/rt/rtio.rs index c5afe7887ad..16882624ab7 100644 --- a/src/libstd/rt/rtio.rs +++ b/src/libstd/rt/rtio.rs @@ -222,6 +222,9 @@ pub trait RtioTcpStream : RtioSocket { fn clone(&self) -> Box<RtioTcpStream:Send>; fn close_write(&mut self) -> IoResult<()>; fn close_read(&mut self) -> IoResult<()>; + fn set_timeout(&mut self, timeout_ms: Option<u64>); + fn set_read_timeout(&mut self, timeout_ms: Option<u64>); + fn set_write_timeout(&mut self, timeout_ms: Option<u64>); } pub trait RtioSocket { @@ -245,6 +248,9 @@ pub trait RtioUdpSocket : RtioSocket { fn ignore_broadcasts(&mut self) -> IoResult<()>; fn clone(&self) -> Box<RtioUdpSocket:Send>; + fn set_timeout(&mut self, timeout_ms: Option<u64>); + fn set_read_timeout(&mut self, timeout_ms: Option<u64>); + fn set_write_timeout(&mut self, timeout_ms: Option<u64>); } pub trait RtioTimer { @@ -278,6 +284,9 @@ pub trait RtioPipe { fn close_write(&mut self) -> IoResult<()>; fn close_read(&mut self) -> IoResult<()>; + fn set_timeout(&mut self, timeout_ms: Option<u64>); + fn set_read_timeout(&mut self, timeout_ms: Option<u64>); + fn set_write_timeout(&mut self, timeout_ms: Option<u64>); } pub trait RtioUnixListener { |
