summaryrefslogtreecommitdiff
path: root/ext/fs/ops.rs
diff options
context:
space:
mode:
authorAsher Gomez <ashersaupingomez@gmail.com>2024-05-23 09:17:00 +1000
committerGitHub <noreply@github.com>2024-05-23 09:17:00 +1000
commit4908d457580505d426ca06437a4f3b04731c5f24 (patch)
tree141dbadde494c2ff3d4e6164a667751a1f3c9a99 /ext/fs/ops.rs
parent8ea9370c55b01cc569289002b798886933f6a905 (diff)
feat(ext/fs): stabilize `Deno.FsFile.unlock[Sync]()` and `Deno.FsFile.lock[Sync]()` (#23754)
Related #22230 CC @dyedgreen
Diffstat (limited to 'ext/fs/ops.rs')
-rw-r--r--ext/fs/ops.rs50
1 files changed, 46 insertions, 4 deletions
diff --git a/ext/fs/ops.rs b/ext/fs/ops.rs
index 71edc7d11..8e715d825 100644
--- a/ext/fs/ops.rs
+++ b/ext/fs/ops.rs
@@ -1498,7 +1498,7 @@ pub async fn op_fs_file_stat_async(
}
#[op2(fast)]
-pub fn op_fs_flock_sync(
+pub fn op_fs_flock_sync_unstable(
state: &mut OpState,
#[smi] rid: ResourceId,
exclusive: bool,
@@ -1510,7 +1510,7 @@ pub fn op_fs_flock_sync(
}
#[op2(async)]
-pub async fn op_fs_flock_async(
+pub async fn op_fs_flock_async_unstable(
state: Rc<RefCell<OpState>>,
#[smi] rid: ResourceId,
exclusive: bool,
@@ -1522,7 +1522,7 @@ pub async fn op_fs_flock_async(
}
#[op2(fast)]
-pub fn op_fs_funlock_sync(
+pub fn op_fs_funlock_sync_unstable(
state: &mut OpState,
#[smi] rid: ResourceId,
) -> Result<(), AnyError> {
@@ -1533,7 +1533,7 @@ pub fn op_fs_funlock_sync(
}
#[op2(async)]
-pub async fn op_fs_funlock_async(
+pub async fn op_fs_funlock_async_unstable(
state: Rc<RefCell<OpState>>,
#[smi] rid: ResourceId,
) -> Result<(), AnyError> {
@@ -1544,6 +1544,48 @@ pub async fn op_fs_funlock_async(
}
#[op2(fast)]
+pub fn op_fs_flock_sync(
+ state: &mut OpState,
+ #[smi] rid: ResourceId,
+ exclusive: bool,
+) -> Result<(), AnyError> {
+ let file = FileResource::get_file(state, rid)?;
+ file.lock_sync(exclusive)?;
+ Ok(())
+}
+
+#[op2(async)]
+pub async fn op_fs_flock_async(
+ state: Rc<RefCell<OpState>>,
+ #[smi] rid: ResourceId,
+ exclusive: bool,
+) -> Result<(), AnyError> {
+ let file = FileResource::get_file(&state.borrow(), rid)?;
+ file.lock_async(exclusive).await?;
+ Ok(())
+}
+
+#[op2(fast)]
+pub fn op_fs_funlock_sync(
+ state: &mut OpState,
+ #[smi] rid: ResourceId,
+) -> Result<(), AnyError> {
+ let file = FileResource::get_file(state, rid)?;
+ file.unlock_sync()?;
+ Ok(())
+}
+
+#[op2(async)]
+pub async fn op_fs_funlock_async(
+ state: Rc<RefCell<OpState>>,
+ #[smi] rid: ResourceId,
+) -> Result<(), AnyError> {
+ let file = FileResource::get_file(&state.borrow(), rid)?;
+ file.unlock_async().await?;
+ Ok(())
+}
+
+#[op2(fast)]
pub fn op_fs_ftruncate_sync(
state: &mut OpState,
#[smi] rid: ResourceId,