2020-05-11 00:48:18 +01:00
// This code was autogenerated with `dbus-codegen-rust --file telepathy-spec/spec/Connection_Interface_Contact_Capabilities.xml -i org.freedesktop.Telepathy -a AsRefClosure -o src/telepathy/connection_interface_contact_capabilities.rs`, see https://github.com/diwic/dbus-rs
2020-05-08 20:38:30 +01:00
use dbus ;
use dbus ::arg ;
use dbus ::tree ;
pub trait ConnectionInterfaceContactCapabilities {
fn update_capabilities (
& self ,
handler_capabilities : Vec < (
& str ,
Vec < ::std ::collections ::HashMap < & str , arg ::Variant < Box < dyn arg ::RefArg > > > > ,
Vec < & str > ,
) > ,
) -> Result < ( ) , tree ::MethodErr > ;
fn get_contact_capabilities (
& self ,
handles : Vec < u32 > ,
) -> Result <
::std ::collections ::HashMap <
u32 ,
Vec < (
::std ::collections ::HashMap < String , arg ::Variant < Box < dyn arg ::RefArg + 'static > > > ,
Vec < String > ,
) > ,
> ,
tree ::MethodErr ,
> ;
}
pub fn connection_interface_contact_capabilities_server < F , T , D > (
factory : & tree ::Factory < tree ::MTFn < D > , D > ,
data : D ::Interface ,
f : F ,
) -> tree ::Interface < tree ::MTFn < D > , D >
where
D : tree ::DataType ,
D ::Method : Default ,
D ::Signal : Default ,
2020-05-11 00:48:18 +01:00
T : AsRef < dyn ConnectionInterfaceContactCapabilities > ,
F : 'static + Fn ( & tree ::MethodInfo < tree ::MTFn < D > , D > ) -> T ,
2020-05-08 20:38:30 +01:00
{
let i = factory . interface (
" org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities " ,
data ,
) ;
let f = ::std ::sync ::Arc ::new ( f ) ;
let fclone = f . clone ( ) ;
let h = move | minfo : & tree ::MethodInfo < tree ::MTFn < D > , D > | {
let mut i = minfo . msg . iter_init ( ) ;
let handler_capabilities : Vec < (
& str ,
Vec < ::std ::collections ::HashMap < & str , arg ::Variant < Box < dyn arg ::RefArg > > > > ,
Vec < & str > ,
) > = i . read ( ) ? ;
2020-05-11 00:48:18 +01:00
let dd = fclone ( minfo ) ;
let d = dd . as_ref ( ) ;
2020-05-08 20:38:30 +01:00
d . update_capabilities ( handler_capabilities ) ? ;
let rm = minfo . msg . method_return ( ) ;
Ok ( vec! [ rm ] )
} ;
let m = factory . method ( " UpdateCapabilities " , Default ::default ( ) , h ) ;
let m = m . in_arg ( ( " Handler_Capabilities " , " a(saa{sv}as) " ) ) ;
let i = i . add_m ( m ) ;
let fclone = f . clone ( ) ;
let h = move | minfo : & tree ::MethodInfo < tree ::MTFn < D > , D > | {
let mut i = minfo . msg . iter_init ( ) ;
let handles : Vec < u32 > = i . read ( ) ? ;
2020-05-11 00:48:18 +01:00
let dd = fclone ( minfo ) ;
let d = dd . as_ref ( ) ;
2020-05-08 20:38:30 +01:00
let contact_capabilities = d . get_contact_capabilities ( handles ) ? ;
let rm = minfo . msg . method_return ( ) ;
let rm = rm . append1 ( contact_capabilities ) ;
Ok ( vec! [ rm ] )
} ;
let m = factory . method ( " GetContactCapabilities " , Default ::default ( ) , h ) ;
let m = m . in_arg ( ( " Handles " , " au " ) ) ;
let m = m . out_arg ( ( " Contact_Capabilities " , " a{ua(a{sv}as)} " ) ) ;
let i = i . add_m ( m ) ;
let s = factory . signal ( " ContactCapabilitiesChanged " , Default ::default ( ) ) ;
let s = s . arg ( ( " caps " , " a{ua(a{sv}as)} " ) ) ;
let i = i . add_s ( s ) ;
i
}
#[ derive(Debug) ]
pub struct ConnectionInterfaceContactCapabilitiesContactCapabilitiesChanged {
pub caps : ::std ::collections ::HashMap <
u32 ,
Vec < (
::std ::collections ::HashMap < String , arg ::Variant < Box < dyn arg ::RefArg + 'static > > > ,
Vec < String > ,
) > ,
> ,
}
impl arg ::AppendAll for ConnectionInterfaceContactCapabilitiesContactCapabilitiesChanged {
fn append ( & self , i : & mut arg ::IterAppend ) {
arg ::RefArg ::append ( & self . caps , i ) ;
}
}
impl arg ::ReadAll for ConnectionInterfaceContactCapabilitiesContactCapabilitiesChanged {
fn read ( i : & mut arg ::Iter ) -> Result < Self , arg ::TypeMismatchError > {
Ok ( ConnectionInterfaceContactCapabilitiesContactCapabilitiesChanged { caps : i . read ( ) ? } )
}
}
impl dbus ::message ::SignalArgs
for ConnectionInterfaceContactCapabilitiesContactCapabilitiesChanged
{
const NAME : & 'static str = " ContactCapabilitiesChanged " ;
const INTERFACE : & 'static str =
" org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities " ;
}