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/io/mod.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/io/mod.rs')
| -rw-r--r-- | src/libstd/io/mod.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index e2fde98a77c..ea3e0219a5b 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -434,6 +434,17 @@ pub enum IoErrorKind { InvalidInput, /// The I/O operation's timeout expired, causing it to be canceled. TimedOut, + /// This write operation failed to write all of its data. + /// + /// Normally the write() method on a Writer guarantees that all of its data + /// has been written, but some operations may be terminated after only + /// partially writing some data. An example of this is a timed out write + /// which successfully wrote a known number of bytes, but bailed out after + /// doing so. + /// + /// The payload contained as part of this variant is the number of bytes + /// which are known to have been successfully written. + ShortWrite(uint), } /// A trait for objects which are byte-oriented streams. Readers are defined by @@ -1429,7 +1440,8 @@ pub fn standard_error(kind: IoErrorKind) -> IoError { PathDoesntExist => "no such file", MismatchedFileTypeForOperation => "mismatched file type", ResourceUnavailable => "resource unavailable", - TimedOut => "operation timed out" + TimedOut => "operation timed out", + ShortWrite(..) => "short write", }; IoError { kind: kind, |
