summaryrefslogtreecommitdiff
path: root/ext/io/lib.rs
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2023-08-01 12:48:39 -0600
committerGitHub <noreply@github.com>2023-08-01 14:48:39 -0400
commit45572e329a395cb20ecb8c2867cc66b7d3a28cfe (patch)
treeb54b46483048356848e4168ec052a583b7151191 /ext/io/lib.rs
parentab2627a014d3a5bb861e30e608cef0b6debb4ff2 (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.rs19
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)
}
}