use std::io;
use std::path::PathBuf;
use super::{ backend, Entry, Metadata, Mount, Operation };
pub fn list( path: impl Into<PathBuf>, done: impl FnOnce( io::Result<Vec<Entry>> ) + Send + 'static )
{
backend::list( path.into(), Box::new( done ) );
}
pub fn stat( path: impl Into<PathBuf>, done: impl FnOnce( io::Result<Metadata> ) + Send + 'static )
{
backend::stat( path.into(), Box::new( done ) );
}
pub fn read( path: impl Into<PathBuf>, done: impl FnOnce( io::Result<Vec<u8>> ) + Send + 'static )
{
backend::read( path.into(), None, Box::new( done ) );
}
pub fn read_range( path: impl Into<PathBuf>, offset: u64, length: u64, done: impl FnOnce( io::Result<Vec<u8>> ) + Send + 'static )
{
backend::read( path.into(), Some( ( offset, length ) ), Box::new( done ) );
}
pub fn write( path: impl Into<PathBuf>, data: Vec<u8>, done: impl FnOnce( io::Result<()> ) + Send + 'static )
{
backend::write( path.into(), data, Box::new( done ) );
}
pub fn create_dir( path: impl Into<PathBuf>, done: impl FnOnce( io::Result<()> ) + Send + 'static )
{
backend::create_dir( path.into(), Box::new( done ) );
}
pub fn rename( from: impl Into<PathBuf>, to: impl Into<PathBuf>, done: impl FnOnce( io::Result<()> ) + Send + 'static )
{
backend::rename( from.into(), to.into(), Box::new( done ) );
}
pub fn remove( path: impl Into<PathBuf>, done: impl FnOnce( io::Result<()> ) + Send + 'static )
{
backend::remove( path.into(), false, Box::new( done ) );
}
pub fn remove_all( path: impl Into<PathBuf>, done: impl FnOnce( io::Result<()> ) + Send + 'static )
{
backend::remove( path.into(), true, Box::new( done ) );
}
pub fn copy( from: impl Into<PathBuf>, to: impl Into<PathBuf>, progress: impl Fn( u64, u64 ) + Send + 'static, done: impl FnOnce( io::Result<()> ) + Send + 'static ) -> Operation
{
Operation { handle: backend::copy( from.into(), to.into(), false, Box::new( progress ), Box::new( done ) ) }
}
pub fn copy_all( from: impl Into<PathBuf>, to: impl Into<PathBuf>, progress: impl Fn( u64, u64 ) + Send + 'static, done: impl FnOnce( io::Result<()> ) + Send + 'static ) -> Operation
{
Operation { handle: backend::copy( from.into(), to.into(), true, Box::new( progress ), Box::new( done ) ) }
}
pub fn mount( done: impl FnOnce( io::Result<Mount> ) + Send + 'static )
{
backend::mount( Box::new( done ) );
}
pub fn unmount( path: impl Into<PathBuf>, done: impl FnOnce( io::Result<()> ) + Send + 'static )
{
backend::unmount( path.into(), Box::new( done ) );
}