From e27f27c8588f5cfa0cd9dfbbdf7609ea2d6818ec Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 25 Apr 2014 20:47:49 -0700 Subject: 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. --- src/libstd/rt/task.rs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/libstd/rt/task.rs') diff --git a/src/libstd/rt/task.rs b/src/libstd/rt/task.rs index 909df5618aa..8924ed7cfd2 100644 --- a/src/libstd/rt/task.rs +++ b/src/libstd/rt/task.rs @@ -323,6 +323,12 @@ impl BlockedTask { } } + /// Reawakens this task if ownership is acquired. If finer-grained control + /// is desired, use `wake` instead. + pub fn reawaken(self) { + self.wake().map(|t| t.reawaken()); + } + // This assertion has two flavours because the wake involves an atomic op. // In the faster version, destructors will fail dramatically instead. #[cfg(not(test))] pub fn trash(self) { } -- cgit 1.4.1-3-g733a5