remove Error::is_runtime_startup accessor

This commit is contained in:
Sean McArthur
2019-01-03 11:07:09 -08:00
parent 59f57072ac
commit 0f4055f9ec
2 changed files with 15 additions and 28 deletions

View File

@@ -504,7 +504,7 @@ impl ClientHandle {
match spawn_rx.wait() {
Ok(Ok(())) => (),
Ok(Err(err)) => return Err(err),
Err(_canceled) => return Err(::error::runtime_startup()),
Err(_canceled) => event_loop_panicked(),
}
@@ -537,14 +537,7 @@ impl ClientHandle {
Either::B(future::ok(()))
};
let rx = rx.map_err(|_canceled| {
// The only possible reason there would be a Canceled error
// is if the thread running the event loop panicked. We could return
// an Err here, like a BrokenPipe, but the Client is not
// recoverable. Additionally, the panic in the other thread
// is not normal, and should likely be propagated.
panic!("event loop thread panicked");
});
let rx = rx.map_err(|_canceled| event_loop_panicked());
let fut = write.join(rx).map(|((), res)| res);
@@ -578,3 +571,14 @@ impl KeepCoreThreadAlive {
KeepCoreThreadAlive(None)
}
}
#[cold]
#[inline(never)]
fn event_loop_panicked() -> ! {
// The only possible reason there would be a Canceled error
// is if the thread running the event loop panicked. We could return
// an Err here, like a BrokenPipe, but the Client is not
// recoverable. Additionally, the panic in the other thread
// is not normal, and should likely be propagated.
panic!("event loop thread panicked");
}

View File

@@ -147,8 +147,7 @@ impl Error {
Kind::TooManyRedirects |
Kind::RedirectLoop |
Kind::ClientError(_) |
Kind::ServerError(_) |
Kind::RuntimeStartupFailure => None,
Kind::ServerError(_) => None,
}
}
@@ -209,14 +208,6 @@ impl Error {
_ => None,
}
}
/// Returns true if this error is due to a failure starting the runtime.
pub fn is_runtime_startup(&self) -> bool {
match self.inner.kind {
Kind::RuntimeStartupFailure => true,
_ => false,
}
}
}
impl fmt::Debug for Error {
@@ -259,7 +250,6 @@ impl fmt::Display for Error {
f.write_str("Server Error: ")?;
fmt::Display::fmt(code, f)
}
Kind::RuntimeStartupFailure => f.write_str("Client runtime failed to start"),
}
}
}
@@ -285,7 +275,6 @@ impl StdError for Error {
Kind::RedirectLoop => "Infinite redirect loop",
Kind::ClientError(_) => "Client Error",
Kind::ServerError(_) => "Server Error",
Kind::RuntimeStartupFailure => "Client runtime failed to start",
}
}
@@ -309,8 +298,7 @@ impl StdError for Error {
Kind::TooManyRedirects |
Kind::RedirectLoop |
Kind::ClientError(_) |
Kind::ServerError(_) |
Kind::RuntimeStartupFailure => None,
Kind::ServerError(_) => None,
}
}
}
@@ -335,7 +323,6 @@ pub(crate) enum Kind {
RedirectLoop,
ClientError(StatusCode),
ServerError(StatusCode),
RuntimeStartupFailure,
}
@@ -502,10 +489,6 @@ pub(crate) fn url_bad_scheme(url: Url) -> Error {
Error::new(Kind::UrlBadScheme, Some(url))
}
pub(crate) fn runtime_startup() -> Error {
Error::new(Kind::RuntimeStartupFailure, None)
}
#[cfg(test)]
mod tests {
use super::*;