Improve error reporting
This commit is contained in:
39
src/lib.rs
39
src/lib.rs
@@ -5,19 +5,16 @@ pub use types::{NiceLevel, Priority};
|
||||
|
||||
#[derive(thiserror::Error, Debug)]
|
||||
pub enum Error {
|
||||
#[error("Permission denied")]
|
||||
PermissionDenied,
|
||||
#[error("Permission denied: {0}")]
|
||||
PermissionDenied(String),
|
||||
|
||||
#[error("Invalid PID")]
|
||||
InvalidPid,
|
||||
#[error("Invalid PID or Thread ID")]
|
||||
InvalidPidOrTid,
|
||||
|
||||
#[error("Invalid thread ID")]
|
||||
InvalidThreadId,
|
||||
|
||||
#[error("Got invalid max priority from RTKit")]
|
||||
#[error("Got invalid max priority from RTKit: {0}")]
|
||||
InvalidMaxPriority(i32),
|
||||
|
||||
#[error("Got invalid min nice level from RTKit")]
|
||||
#[error("Got invalid min nice level from RTKit: {0}")]
|
||||
InvalidMinNiceLevel(i32),
|
||||
|
||||
#[error(transparent)]
|
||||
@@ -54,8 +51,10 @@ pub fn set_thread_priority(tid: u64, priority: Option<Priority>) -> Result<Prior
|
||||
.make_thread_realtime(tid, priority.value())
|
||||
.map(|_| priority)
|
||||
.map_err(|e| match e {
|
||||
zbus::fdo::Error::AccessDenied(_) => Error::PermissionDenied,
|
||||
e => Error::ZbusMethodError(e),
|
||||
zbus::fdo::Error::AccessDenied(err) => Error::PermissionDenied(err),
|
||||
// NOTE: RTKit returns "No such file or directory" for invalid tids.
|
||||
zbus::fdo::Error::Failed(err) if err == "No such file or directory" => Error::InvalidPidOrTid,
|
||||
err => Error::ZbusMethodError(err),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -84,8 +83,10 @@ pub fn set_process_thread_priority(
|
||||
.make_thread_realtime_with_pid(pid, tid, priority.value())
|
||||
.map(|_| priority)
|
||||
.map_err(|e| match e {
|
||||
zbus::fdo::Error::AccessDenied(_) => Error::PermissionDenied,
|
||||
e => Error::ZbusMethodError(e),
|
||||
zbus::fdo::Error::AccessDenied(err) => Error::PermissionDenied(err),
|
||||
// NOTE: RTKit returns "No such file or directory" for invalid tids.
|
||||
zbus::fdo::Error::Failed(err) if err == "No such file or directory" => Error::InvalidPidOrTid,
|
||||
err => Error::ZbusMethodError(err),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -118,8 +119,10 @@ pub fn set_thread_nice_level(tid: u64, nice_level: Option<NiceLevel>) -> Result<
|
||||
.make_thread_high_priority(tid, nice_level.value())
|
||||
.map(|_| nice_level)
|
||||
.map_err(|e| match e {
|
||||
zbus::fdo::Error::AccessDenied(_) => Error::PermissionDenied,
|
||||
e => Error::ZbusMethodError(e),
|
||||
zbus::fdo::Error::AccessDenied(err) => Error::PermissionDenied(err),
|
||||
// NOTE: RTKit returns "No such file or directory" for invalid tids.
|
||||
zbus::fdo::Error::Failed(err) if err == "No such file or directory" => Error::InvalidPidOrTid,
|
||||
err => Error::ZbusMethodError(err),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -148,7 +151,9 @@ pub fn set_process_thread_nice_level(
|
||||
.make_thread_high_priority_with_pid(pid, tid, nice_level.value())
|
||||
.map(|_| nice_level)
|
||||
.map_err(|e| match e {
|
||||
zbus::fdo::Error::AccessDenied(_) => Error::PermissionDenied,
|
||||
e => Error::ZbusMethodError(e),
|
||||
zbus::fdo::Error::AccessDenied(err) => Error::PermissionDenied(err),
|
||||
// NOTE: RTKit returns "No such file or directory" for invalid tids.
|
||||
zbus::fdo::Error::Failed(err) if err == "No such file or directory" => Error::InvalidPidOrTid,
|
||||
err => Error::ZbusMethodError(err),
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user