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 | |
| 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')
| -rw-r--r-- | ext/fs/30_fs.js | 12 | ||||
| -rw-r--r-- | ext/fs/lib.rs | 8 | ||||
| -rw-r--r-- | ext/fs/ops.rs | 50 |
3 files changed, 60 insertions, 10 deletions
diff --git a/ext/fs/30_fs.js b/ext/fs/30_fs.js index d65f8560d..3a35749d8 100644 --- a/ext/fs/30_fs.js +++ b/ext/fs/30_fs.js @@ -20,13 +20,17 @@ import { op_fs_file_stat_async, op_fs_file_stat_sync, op_fs_flock_async, + op_fs_flock_async_unstable, op_fs_flock_sync, + op_fs_flock_sync_unstable, op_fs_fsync_async, op_fs_fsync_sync, op_fs_ftruncate_async, op_fs_ftruncate_sync, op_fs_funlock_async, + op_fs_funlock_async_unstable, op_fs_funlock_sync, + op_fs_funlock_sync_unstable, op_fs_futime_async, op_fs_futime_sync, op_fs_link_async, @@ -577,19 +581,19 @@ async function fsync(rid) { } function flockSync(rid, exclusive) { - op_fs_flock_sync(rid, exclusive === true); + op_fs_flock_sync_unstable(rid, exclusive === true); } async function flock(rid, exclusive) { - await op_fs_flock_async(rid, exclusive === true); + await op_fs_flock_async_unstable(rid, exclusive === true); } function funlockSync(rid) { - op_fs_funlock_sync(rid); + op_fs_funlock_sync_unstable(rid); } async function funlock(rid) { - await op_fs_funlock_async(rid); + await op_fs_funlock_async_unstable(rid); } function seekSync( diff --git a/ext/fs/lib.rs b/ext/fs/lib.rs index 0c3b99c24..d6794d3ac 100644 --- a/ext/fs/lib.rs +++ b/ext/fs/lib.rs @@ -148,10 +148,14 @@ deno_core::extension!(deno_fs, op_fs_fsync_async, op_fs_file_stat_sync, op_fs_file_stat_async, - op_fs_flock_sync, + op_fs_flock_sync_unstable, + op_fs_flock_async_unstable, + op_fs_funlock_sync_unstable, + op_fs_funlock_async_unstable, op_fs_flock_async, - op_fs_funlock_sync, + op_fs_flock_sync, op_fs_funlock_async, + op_fs_funlock_sync, op_fs_ftruncate_sync, op_fs_ftruncate_async, op_fs_futime_sync, 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, |
