diff options
author | Asher Gomez <ashersaupingomez@gmail.com> | 2024-05-23 09:17:00 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-23 09:17:00 +1000 |
commit | 4908d457580505d426ca06437a4f3b04731c5f24 (patch) | |
tree | 141dbadde494c2ff3d4e6164a667751a1f3c9a99 /ext/fs/ops.rs | |
parent | 8ea9370c55b01cc569289002b798886933f6a905 (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.rs | 50 |
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, |