diff options
Diffstat (limited to 'runtime/ops/fs.rs')
-rw-r--r-- | runtime/ops/fs.rs | 94 |
1 files changed, 38 insertions, 56 deletions
diff --git a/runtime/ops/fs.rs b/runtime/ops/fs.rs index 2bcd6cacc..fdfdff6b4 100644 --- a/runtime/ops/fs.rs +++ b/runtime/ops/fs.rs @@ -322,11 +322,8 @@ fn seek_helper(args: SeekArgs) -> Result<(u32, SeekFrom), AnyError> { #[op] fn op_seek_sync(state: &mut OpState, args: SeekArgs) -> Result<u64, AnyError> { let (rid, seek_from) = seek_helper(args)?; - let pos = StdFileResource::with(state, rid, |r| match r { - Ok(std_file) => std_file.seek(seek_from).map_err(AnyError::from), - Err(_) => Err(type_error( - "cannot seek on this type of resource".to_string(), - )), + let pos = StdFileResource::with_file(state, rid, |std_file| { + std_file.seek(seek_from).map_err(AnyError::from) })?; Ok(pos) } @@ -343,10 +340,10 @@ async fn op_seek_async( .resource_table .get::<StdFileResource>(rid)?; - let std_file = resource.std_file()?; + let std_file = resource.std_file(); tokio::task::spawn_blocking(move || { - let mut std_file = std_file.lock().unwrap(); + let mut std_file = std_file.lock(); std_file.seek(seek_from) }) .await? @@ -358,9 +355,8 @@ fn op_fdatasync_sync( state: &mut OpState, rid: ResourceId, ) -> Result<(), AnyError> { - StdFileResource::with(state, rid, |r| match r { - Ok(std_file) => std_file.sync_data().map_err(AnyError::from), - Err(_) => Err(type_error("cannot sync this type of resource".to_string())), + StdFileResource::with_file(state, rid, |std_file| { + std_file.sync_data().map_err(AnyError::from) })?; Ok(()) } @@ -375,10 +371,10 @@ async fn op_fdatasync_async( .resource_table .get::<StdFileResource>(rid)?; - let std_file = resource.std_file()?; + let std_file = resource.std_file(); tokio::task::spawn_blocking(move || { - let std_file = std_file.lock().unwrap(); + let std_file = std_file.lock(); std_file.sync_data() }) .await? @@ -387,9 +383,8 @@ async fn op_fdatasync_async( #[op] fn op_fsync_sync(state: &mut OpState, rid: ResourceId) -> Result<(), AnyError> { - StdFileResource::with(state, rid, |r| match r { - Ok(std_file) => std_file.sync_all().map_err(AnyError::from), - Err(_) => Err(type_error("cannot sync this type of resource".to_string())), + StdFileResource::with_file(state, rid, |std_file| { + std_file.sync_all().map_err(AnyError::from) })?; Ok(()) } @@ -404,10 +399,10 @@ async fn op_fsync_async( .resource_table .get::<StdFileResource>(rid)?; - let std_file = resource.std_file()?; + let std_file = resource.std_file(); tokio::task::spawn_blocking(move || { - let std_file = std_file.lock().unwrap(); + let std_file = std_file.lock(); std_file.sync_all() }) .await? @@ -419,9 +414,8 @@ fn op_fstat_sync( state: &mut OpState, rid: ResourceId, ) -> Result<FsStat, AnyError> { - let metadata = StdFileResource::with(state, rid, |r| match r { - Ok(std_file) => std_file.metadata().map_err(AnyError::from), - Err(_) => Err(type_error("cannot stat this type of resource".to_string())), + let metadata = StdFileResource::with_file(state, rid, |std_file| { + std_file.metadata().map_err(AnyError::from) })?; Ok(get_stat(metadata)) } @@ -436,10 +430,10 @@ async fn op_fstat_async( .resource_table .get::<StdFileResource>(rid)?; - let std_file = resource.std_file()?; + let std_file = resource.std_file(); let metadata = tokio::task::spawn_blocking(move || { - let std_file = std_file.lock().unwrap(); + let std_file = std_file.lock(); std_file.metadata() }) .await? @@ -456,16 +450,13 @@ fn op_flock_sync( use fs3::FileExt; super::check_unstable(state, "Deno.flockSync"); - StdFileResource::with(state, rid, |r| match r { - Ok(std_file) => { - if exclusive { - std_file.lock_exclusive()?; - } else { - std_file.lock_shared()?; - } - Ok(()) + StdFileResource::with_file(state, rid, |std_file| { + if exclusive { + std_file.lock_exclusive()?; + } else { + std_file.lock_shared()?; } - Err(_) => Err(type_error("cannot lock this type of resource".to_string())), + Ok(()) }) } @@ -483,10 +474,10 @@ async fn op_flock_async( .resource_table .get::<StdFileResource>(rid)?; - let std_file = resource.std_file()?; + let std_file = resource.std_file(); tokio::task::spawn_blocking(move || -> Result<(), AnyError> { - let std_file = std_file.lock().unwrap(); + let std_file = std_file.lock(); if exclusive { std_file.lock_exclusive()?; } else { @@ -505,12 +496,9 @@ fn op_funlock_sync( use fs3::FileExt; super::check_unstable(state, "Deno.funlockSync"); - StdFileResource::with(state, rid, |r| match r { - Ok(std_file) => { - std_file.unlock()?; - Ok(()) - } - Err(_) => Err(type_error("cannot lock this type of resource".to_string())), + StdFileResource::with_file(state, rid, |std_file| { + std_file.unlock()?; + Ok(()) }) } @@ -527,10 +515,10 @@ async fn op_funlock_async( .resource_table .get::<StdFileResource>(rid)?; - let std_file = resource.std_file()?; + let std_file = resource.std_file(); tokio::task::spawn_blocking(move || -> Result<(), AnyError> { - let std_file = std_file.lock().unwrap(); + let std_file = std_file.lock(); std_file.unlock()?; Ok(()) }) @@ -1590,9 +1578,8 @@ fn op_ftruncate_sync( ) -> Result<(), AnyError> { let rid = args.rid; let len = args.len as u64; - StdFileResource::with(state, rid, |r| match r { - Ok(std_file) => std_file.set_len(len).map_err(AnyError::from), - Err(_) => Err(type_error("cannot truncate this type of resource")), + StdFileResource::with_file(state, rid, |std_file| { + std_file.set_len(len).map_err(AnyError::from) })?; Ok(()) } @@ -1610,10 +1597,10 @@ async fn op_ftruncate_async( .resource_table .get::<StdFileResource>(rid)?; - let std_file = resource.std_file()?; + let std_file = resource.std_file(); tokio::task::spawn_blocking(move || { - let std_file = std_file.lock().unwrap(); + let std_file = std_file.lock(); std_file.set_len(len) }) .await? @@ -1879,14 +1866,9 @@ fn op_futime_sync( let atime = filetime::FileTime::from_unix_time(args.atime.0, args.atime.1); let mtime = filetime::FileTime::from_unix_time(args.mtime.0, args.mtime.1); - StdFileResource::with(state, rid, |r| match r { - Ok(std_file) => { - filetime::set_file_handle_times(std_file, Some(atime), Some(mtime)) - .map_err(AnyError::from) - } - Err(_) => Err(type_error( - "cannot futime on this type of resource".to_string(), - )), + StdFileResource::with_file(state, rid, |std_file| { + filetime::set_file_handle_times(std_file, Some(atime), Some(mtime)) + .map_err(AnyError::from) })?; Ok(()) @@ -1907,9 +1889,9 @@ async fn op_futime_async( .resource_table .get::<StdFileResource>(rid)?; - let std_file = resource.std_file()?; + let std_file = resource.std_file(); tokio::task::spawn_blocking(move || { - let std_file = std_file.lock().unwrap(); + let std_file = std_file.lock(); filetime::set_file_handle_times(&std_file, Some(atime), Some(mtime))?; Ok(()) }) |