diff options
author | Matt Mastracci <matthew@mastracci.com> | 2023-08-01 12:48:39 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-01 14:48:39 -0400 |
commit | 45572e329a395cb20ecb8c2867cc66b7d3a28cfe (patch) | |
tree | b54b46483048356848e4168ec052a583b7151191 /ext/io/lib.rs | |
parent | ab2627a014d3a5bb861e30e608cef0b6debb4ff2 (diff) |
refactor(runtime): use new fd methods from resource table (#20010)
Prereq for fast streams work. No longer need `#[cfg]` around
`backing_fd`.
Diffstat (limited to 'ext/io/lib.rs')
-rw-r--r-- | ext/io/lib.rs | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/ext/io/lib.rs b/ext/io/lib.rs index 00509011f..090622231 100644 --- a/ext/io/lib.rs +++ b/ext/io/lib.rs @@ -14,6 +14,8 @@ use deno_core::Op; use deno_core::OpState; use deno_core::RcRef; use deno_core::Resource; +use deno_core::ResourceHandle; +use deno_core::ResourceHandleFd; use deno_core::TaskQueue; use fs::FileResource; use fs::FsError; @@ -308,6 +310,7 @@ pub struct StdFileResourceInner { // Used to keep async actions in order and only allow one // to occur at a time cell_async_task_queue: TaskQueue, + handle: ResourceHandleFd, } impl StdFileResourceInner { @@ -316,8 +319,11 @@ impl StdFileResourceInner { } fn new(kind: StdFileResourceKind, fs_file: StdFile) -> Self { + // We know this will be an fd + let handle = ResourceHandle::from_fd_like(&fs_file).as_fd_like().unwrap(); StdFileResourceInner { kind, + handle, cell: RefCell::new(Some(fs_file)), cell_async_task_queue: Default::default(), } @@ -705,6 +711,7 @@ impl crate::fs::File for StdFileResourceInner { kind: self.kind, cell: RefCell::new(Some(inner.try_clone()?)), cell_async_task_queue: Default::default(), + handle: self.handle, })), None => Err(FsError::FileBusy), } @@ -720,16 +727,8 @@ impl crate::fs::File for StdFileResourceInner { } } - #[cfg(unix)] - fn backing_fd(self: Rc<Self>) -> Option<std::os::unix::prelude::RawFd> { - use std::os::unix::io::AsRawFd; - self.with_sync(|file| Ok(file.as_raw_fd())).ok() - } - - #[cfg(windows)] - fn backing_fd(self: Rc<Self>) -> Option<std::os::windows::io::RawHandle> { - use std::os::windows::prelude::AsRawHandle; - self.with_sync(|file| Ok(file.as_raw_handle())).ok() + fn backing_fd(self: Rc<Self>) -> Option<ResourceHandleFd> { + Some(self.handle) } } |