Implement From<ServiceError> for dbus::MethodErr
This commit is contained in:
parent
baa1d67f29
commit
7495c57013
@ -10,6 +10,19 @@ pub enum ServiceError {
|
|||||||
IOError(std::io::Error)
|
IOError(std::io::Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ServiceError {
|
||||||
|
pub fn name(&self) -> String {
|
||||||
|
match self {
|
||||||
|
Self::NoPermission => crate::iface_name("Error.NoPermission"),
|
||||||
|
Self::NotImplementedYet => crate::iface_name("Error.NotImplementedYet"),
|
||||||
|
Self::AlreadyStarted => crate::iface_name("Error.AlreadyStarted"),
|
||||||
|
Self::AlreadyStopped => crate::iface_name("Error.AlreadyStopped"),
|
||||||
|
Self::Failed => crate::iface_name("Error.Failed"),
|
||||||
|
Self::IOError(err) => format!("{}.{:?}", crate::iface_name("Error.IO"), err.kind()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Error for ServiceError {
|
impl Error for ServiceError {
|
||||||
fn source(&self) -> Option<&(dyn Error + 'static)> {
|
fn source(&self) -> Option<&(dyn Error + 'static)> {
|
||||||
match self {
|
match self {
|
||||||
@ -39,6 +52,12 @@ impl core::fmt::Display for ServiceError {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<ServiceError> for dbus::MethodErr {
|
||||||
|
fn from(se: ServiceError) -> Self {
|
||||||
|
(se.name(), se.to_string()).into()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone)]
|
#[derive(Debug, Copy, Clone)]
|
||||||
pub enum Service {
|
pub enum Service {
|
||||||
Daemon,
|
Daemon,
|
||||||
|
@ -3,7 +3,7 @@ use dbus::{
|
|||||||
message::MatchRule,
|
message::MatchRule,
|
||||||
channel::MatchingReceiver
|
channel::MatchingReceiver
|
||||||
};
|
};
|
||||||
use dbus_tree::{ Factory, MethodErr };
|
use dbus_tree::Factory;
|
||||||
use ifaces::*;
|
use ifaces::*;
|
||||||
use tokio::sync::RwLock;
|
use tokio::sync::RwLock;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@ -58,19 +58,19 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
data.read().await
|
data.read().await
|
||||||
.start().await
|
.start().await
|
||||||
.map(|_| vec![m.msg.method_return()])
|
.map(|_| vec![m.msg.method_return()])
|
||||||
.map_err(|err| MethodErr::failed(&err))
|
.map_err(|err| err.into())
|
||||||
})))
|
})))
|
||||||
.add_m(f.method_sync("Stop", (), handle_iface!(m, |data| {
|
.add_m(f.method_sync("Stop", (), handle_iface!(m, |data| {
|
||||||
data.read().await
|
data.read().await
|
||||||
.stop().await
|
.stop().await
|
||||||
.map(|_| vec![m.msg.method_return()])
|
.map(|_| vec![m.msg.method_return()])
|
||||||
.map_err(|err| MethodErr::failed(&err))
|
.map_err(|err| err.into())
|
||||||
})))
|
})))
|
||||||
.add_m(f.method_sync("Restart", (), handle_iface!(m, |data| {
|
.add_m(f.method_sync("Restart", (), handle_iface!(m, |data| {
|
||||||
data.read().await
|
data.read().await
|
||||||
.restart().await
|
.restart().await
|
||||||
.map(|_| vec![m.msg.method_return()])
|
.map(|_| vec![m.msg.method_return()])
|
||||||
.map_err(|err| MethodErr::failed(&err))
|
.map_err(|err| err.into())
|
||||||
})))
|
})))
|
||||||
.add_m(f.method_sync("IsRunning", (), handle_iface!(m, |data| {
|
.add_m(f.method_sync("IsRunning", (), handle_iface!(m, |data| {
|
||||||
Ok(vec![m.msg.method_return().append1(
|
Ok(vec![m.msg.method_return().append1(
|
||||||
|
Loading…
Reference in New Issue
Block a user