summaryrefslogtreecommitdiff
path: root/runtime/ops/fs.rs
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/ops/fs.rs')
-rw-r--r--runtime/ops/fs.rs94
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(())
})