remove Error::is_runtime_startup accessor
This commit is contained in:
@@ -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");
|
||||
}
|
||||
|
||||
21
src/error.rs
21
src/error.rs
@@ -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::*;
|
||||
|
||||
Reference in New Issue
Block a user