From 36e8c8dfd759458aa735f79f5cc7cd346c727914 Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Thu, 6 Apr 2023 00:14:16 +0200 Subject: feat(core): sync io ops in core (#18603) This commit adds op_read_sync and op_write_sync to core. These ops are similar to op_read and op_write, but they are synchronous. Just like the async ops, they operate on generic `deno_core::Resource` objects. These now have new `read_byob_sync` and `write_sync` methods, with default implementations throwing "NotSupported" errors, just like the async counterparts. There are no `write_all` or `read` equivalents, because the optimizations they unlock are not useful in synchronous contexts. --- core/resources.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'core/resources.rs') diff --git a/core/resources.rs b/core/resources.rs index 5bec68481..6ca86e10b 100644 --- a/core/resources.rs +++ b/core/resources.rs @@ -154,6 +154,18 @@ pub trait Resource: Any + 'static { }) } + /// The same as [`read_byob()`][Resource::read_byob], but synchronous. + fn read_byob_sync(&self, data: &mut [u8]) -> Result { + _ = data; + Err(not_supported()) + } + + /// The same as [`write()`][Resource::write], but synchronous. + fn write_sync(&self, data: &[u8]) -> Result { + _ = data; + Err(not_supported()) + } + /// The shutdown method can be used to asynchronously close the resource. It /// is not automatically called when the resource is dropped or closed. /// -- cgit v1.2.3