use dbus_tree::{Access, EmitsChangedSignal, Factory, MTSync, Method, Property};
use crate::dbus_api::{
consts,
pool::pool_2_0::{
methods::{
add_cachedevs, add_datadevs, create_filesystems, destroy_filesystems, rename_pool,
snapshot_filesystem,
},
props::get_pool_name,
},
types::TData,
util::get_uuid,
};
pub fn create_filesystems_method(
f: &Factory<MTSync<TData>, TData>,
) -> Method<MTSync<TData>, TData> {
f.method("CreateFilesystems", (), create_filesystems)
.in_arg(("specs", "as"))
.out_arg(("results", "(ba(os))"))
.out_arg(("return_code", "q"))
.out_arg(("return_string", "s"))
}
pub fn destroy_filesystems_method(
f: &Factory<MTSync<TData>, TData>,
) -> Method<MTSync<TData>, TData> {
f.method("DestroyFilesystems", (), destroy_filesystems)
.in_arg(("filesystems", "ao"))
.out_arg(("results", "(bas)"))
.out_arg(("return_code", "q"))
.out_arg(("return_string", "s"))
}
pub fn snapshot_filesystem_method(
f: &Factory<MTSync<TData>, TData>,
) -> Method<MTSync<TData>, TData> {
f.method("SnapshotFilesystem", (), snapshot_filesystem)
.in_arg(("origin", "o"))
.in_arg(("snapshot_name", "s"))
.out_arg(("result", "(bo)"))
.out_arg(("return_code", "q"))
.out_arg(("return_string", "s"))
}
pub fn add_blockdevs_method(f: &Factory<MTSync<TData>, TData>) -> Method<MTSync<TData>, TData> {
f.method("AddDataDevs", (), add_datadevs)
.in_arg(("devices", "as"))
.out_arg(("results", "(bao)"))
.out_arg(("return_code", "q"))
.out_arg(("return_string", "s"))
}
pub fn add_cachedevs_method(f: &Factory<MTSync<TData>, TData>) -> Method<MTSync<TData>, TData> {
f.method("AddCacheDevs", (), add_cachedevs)
.in_arg(("devices", "as"))
.out_arg(("results", "(bao)"))
.out_arg(("return_code", "q"))
.out_arg(("return_string", "s"))
}
pub fn rename_method(f: &Factory<MTSync<TData>, TData>) -> Method<MTSync<TData>, TData> {
f.method("SetName", (), rename_pool)
.in_arg(("name", "s"))
.out_arg(("result", "(bs)"))
.out_arg(("return_code", "q"))
.out_arg(("return_string", "s"))
}
pub fn name_property(f: &Factory<MTSync<TData>, TData>) -> Property<MTSync<TData>, TData> {
f.property::<&str, _>(consts::POOL_NAME_PROP, ())
.access(Access::Read)
.emits_changed(EmitsChangedSignal::True)
.on_get(get_pool_name)
}
pub fn uuid_property(f: &Factory<MTSync<TData>, TData>) -> Property<MTSync<TData>, TData> {
f.property::<&str, _>(consts::POOL_UUID_PROP, ())
.access(Access::Read)
.emits_changed(EmitsChangedSignal::Const)
.on_get(get_uuid)
}