1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
use failure_derive::Fail; #[derive(Debug, Fail)] pub enum AdbError { #[fail(display = "io error: {}", _0)] Io(#[cause] ::std::io::Error), #[fail(display = "data crc mismatch")] Crc, #[fail(display = "auth not supported")] AuthNotSupported, #[fail(display = "unknown command: {:x}", _0)] UnknownCommand(u32), #[fail(display = "unexpected command: {:?}", _0)] UnexpectedCommand(crate::message::Command), #[fail(display = "unexpected data: {:?}", _0)] UnexpectedData(Vec<u8>), #[fail(display = "disconnected")] Disconnected, #[fail(display = "fail: {}", _0)] Fail(String), } impl AdbError { pub fn from_unexpected_command_u32(cmd: u32) -> Self { use crate::message::Command; use num_traits::FromPrimitive; if let Some(cmd) = Command::from_u32(cmd) { AdbError::UnexpectedCommand(cmd) } else { AdbError::UnknownCommand(cmd) } } } pub type AdbResult<T> = Result<T, AdbError>; impl From<::std::io::Error> for AdbError { fn from(err: ::std::io::Error) -> AdbError { AdbError::Io(err) } }