@@ -5,6 +5,7 @@ use zvariant::{Error as VariantError, ObjectPath};
55use crate :: {
66 fdo,
77 message:: { Message , Type } ,
8+ Address ,
89} ;
910
1011/// The error type for `zbus`.
@@ -20,6 +21,8 @@ pub enum Error {
2021 Address ( String ) ,
2122 /// An I/O error.
2223 InputOutput ( Arc < io:: Error > ) ,
24+ /// An I/O error with its Target.
25+ InputOutputAddress ( Arc < io:: Error > , Address ) ,
2326 /// Invalid message field.
2427 InvalidField ,
2528 /// Data too large.
@@ -96,6 +99,7 @@ impl error::Error for Error {
9699 Error :: InterfaceNotFound => None ,
97100 Error :: Address ( _) => None ,
98101 Error :: InputOutput ( e) => Some ( e) ,
102+ Error :: InputOutputAddress ( e, _) => Some ( e) ,
99103 Error :: ExcessData => None ,
100104 Error :: Handshake ( _) => None ,
101105 Error :: IncorrectEndian => None ,
@@ -125,6 +129,7 @@ impl fmt::Display for Error {
125129 Error :: Address ( e) => write ! ( f, "address error: {e}" ) ,
126130 Error :: ExcessData => write ! ( f, "excess data" ) ,
127131 Error :: InputOutput ( e) => write ! ( f, "I/O error: {e}" ) ,
132+ Error :: InputOutputAddress ( e, address) => write ! ( f, "I/O error: {e} for {address}" ) ,
128133 Error :: Handshake ( e) => write ! ( f, "D-Bus handshake failed: {e}" ) ,
129134 Error :: IncorrectEndian => write ! ( f, "incorrect endian" ) ,
130135 Error :: InvalidField => write ! ( f, "invalid message field" ) ,
@@ -160,6 +165,9 @@ impl Clone for Error {
160165 Error :: Address ( e) => Error :: Address ( e. clone ( ) ) ,
161166 Error :: ExcessData => Error :: ExcessData ,
162167 Error :: InputOutput ( e) => Error :: InputOutput ( e. clone ( ) ) ,
168+ Error :: InputOutputAddress ( e, address) => {
169+ Error :: InputOutputAddress ( e. clone ( ) , address. clone ( ) )
170+ }
163171 Error :: Handshake ( e) => Error :: Handshake ( e. clone ( ) ) ,
164172 Error :: IncorrectEndian => Error :: IncorrectEndian ,
165173 Error :: InvalidField => Error :: InvalidField ,
0 commit comments