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.
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user