diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2022-03-14 23:14:15 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-14 18:44:15 +0100 |
commit | b4e42953e1d243f2eda20e5be6b845d60b7bf688 (patch) | |
tree | 10b3bfff165f9c04f9174c7c399d44b9b724c3b3 /ext/web | |
parent | 4e3ed37037a2aa1edeac260dc3463a81d9cf9b88 (diff) |
feat(core): codegen ops (#13861)
Co-authored-by: Aaron O'Mullan <aaron.omullan@gmail.com>
Diffstat (limited to 'ext/web')
-rw-r--r-- | ext/web/blob.rs | 9 | ||||
-rw-r--r-- | ext/web/compression.rs | 4 | ||||
-rw-r--r-- | ext/web/lib.rs | 88 | ||||
-rw-r--r-- | ext/web/message_port.rs | 5 | ||||
-rw-r--r-- | ext/web/timers.rs | 6 |
5 files changed, 58 insertions, 54 deletions
diff --git a/ext/web/blob.rs b/ext/web/blob.rs index 37e93c853..ad7f6c582 100644 --- a/ext/web/blob.rs +++ b/ext/web/blob.rs @@ -1,5 +1,7 @@ use async_trait::async_trait; use deno_core::error::type_error; +use deno_core::op; + use deno_core::parking_lot::Mutex; use deno_core::url::Url; use deno_core::ZeroCopyBuf; @@ -157,6 +159,7 @@ impl BlobPart for SlicedBlobPart { } } +#[op] pub fn op_blob_create_part( state: &mut deno_core::OpState, data: ZeroCopyBuf, @@ -175,6 +178,7 @@ pub struct SliceOptions { len: usize, } +#[op] pub fn op_blob_slice_part( state: &mut deno_core::OpState, id: Uuid, @@ -200,6 +204,7 @@ pub fn op_blob_slice_part( Ok(id) } +#[op] pub async fn op_blob_read_part( state: Rc<RefCell<deno_core::OpState>>, id: Uuid, @@ -215,6 +220,7 @@ pub async fn op_blob_read_part( Ok(ZeroCopyBuf::from(buf.to_vec())) } +#[op] pub fn op_blob_remove_part( state: &mut deno_core::OpState, id: Uuid, @@ -225,6 +231,7 @@ pub fn op_blob_remove_part( Ok(()) } +#[op] pub fn op_blob_create_object_url( state: &mut deno_core::OpState, media_type: String, @@ -250,6 +257,7 @@ pub fn op_blob_create_object_url( Ok(url.to_string()) } +#[op] pub fn op_blob_revoke_object_url( state: &mut deno_core::OpState, url: String, @@ -273,6 +281,7 @@ pub struct ReturnBlobPart { pub size: usize, } +#[op] pub fn op_blob_from_object_url( state: &mut deno_core::OpState, url: String, diff --git a/ext/web/compression.rs b/ext/web/compression.rs index c84db7550..d38f65d6a 100644 --- a/ext/web/compression.rs +++ b/ext/web/compression.rs @@ -1,6 +1,7 @@ // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. use deno_core::error::AnyError; +use deno_core::op; use deno_core::OpState; use deno_core::Resource; use deno_core::ResourceId; @@ -32,6 +33,7 @@ impl Resource for CompressionResource { } } +#[op] pub fn op_compression_new( state: &mut OpState, format: String, @@ -53,6 +55,7 @@ pub fn op_compression_new( Ok(state.resource_table.add(resource)) } +#[op] pub fn op_compression_write( state: &mut OpState, rid: ResourceId, @@ -86,6 +89,7 @@ pub fn op_compression_write( Ok(out.into()) } +#[op] pub fn op_compression_finish( state: &mut OpState, rid: ResourceId, diff --git a/ext/web/lib.rs b/ext/web/lib.rs index f117bfb9d..6c278cbb0 100644 --- a/ext/web/lib.rs +++ b/ext/web/lib.rs @@ -9,8 +9,7 @@ use deno_core::error::range_error; use deno_core::error::type_error; use deno_core::error::AnyError; use deno_core::include_js_files; -use deno_core::op_async; -use deno_core::op_sync; +use deno_core::op; use deno_core::url::Url; use deno_core::ByteString; use deno_core::Extension; @@ -83,58 +82,31 @@ pub fn init<P: TimersPermission + 'static>( "15_performance.js", )) .ops(vec![ - ("op_base64_decode", op_sync(op_base64_decode)), - ("op_base64_encode", op_sync(op_base64_encode)), - ("op_base64_atob", op_sync(op_base64_atob)), - ("op_base64_btoa", op_sync(op_base64_btoa)), - ( - "op_encoding_normalize_label", - op_sync(op_encoding_normalize_label), - ), - ("op_encoding_new_decoder", op_sync(op_encoding_new_decoder)), - ("op_encoding_decode", op_sync(op_encoding_decode)), - ("op_encoding_encode_into", op_sync(op_encoding_encode_into)), - ("op_blob_create_part", op_sync(op_blob_create_part)), - ("op_blob_slice_part", op_sync(op_blob_slice_part)), - ("op_blob_read_part", op_async(op_blob_read_part)), - ("op_blob_remove_part", op_sync(op_blob_remove_part)), - ( - "op_blob_create_object_url", - op_sync(op_blob_create_object_url), - ), - ( - "op_blob_revoke_object_url", - op_sync(op_blob_revoke_object_url), - ), - ("op_blob_from_object_url", op_sync(op_blob_from_object_url)), - ( - "op_message_port_create_entangled", - op_sync(op_message_port_create_entangled), - ), - ( - "op_message_port_post_message", - op_sync(op_message_port_post_message), - ), - ( - "op_message_port_recv_message", - op_async(op_message_port_recv_message), - ), - ( - "op_compression_new", - op_sync(compression::op_compression_new), - ), - ( - "op_compression_write", - op_sync(compression::op_compression_write), - ), - ( - "op_compression_finish", - op_sync(compression::op_compression_finish), - ), - ("op_now", op_sync(op_now::<P>)), - ("op_timer_handle", op_sync(op_timer_handle)), - ("op_sleep", op_async(op_sleep)), - ("op_sleep_sync", op_sync(op_sleep_sync::<P>)), + op_base64_decode::decl(), + op_base64_encode::decl(), + op_base64_atob::decl(), + op_base64_btoa::decl(), + op_encoding_normalize_label::decl(), + op_encoding_new_decoder::decl(), + op_encoding_decode::decl(), + op_encoding_encode_into::decl(), + op_blob_create_part::decl(), + op_blob_slice_part::decl(), + op_blob_read_part::decl(), + op_blob_remove_part::decl(), + op_blob_create_object_url::decl(), + op_blob_revoke_object_url::decl(), + op_blob_from_object_url::decl(), + op_message_port_create_entangled::decl(), + op_message_port_post_message::decl(), + op_message_port_recv_message::decl(), + compression::op_compression_new::decl(), + compression::op_compression_write::decl(), + compression::op_compression_finish::decl(), + op_now::decl::<P>(), + op_timer_handle::decl(), + op_sleep::decl(), + op_sleep_sync::decl::<P>(), ]) .state(move |state| { state.put(blob_store.clone()); @@ -147,6 +119,7 @@ pub fn init<P: TimersPermission + 'static>( .build() } +#[op] fn op_base64_decode( _: &mut OpState, input: String, @@ -157,6 +130,7 @@ fn op_base64_decode( Ok(b64_decode(&input)?.into()) } +#[op] fn op_base64_atob( _: &mut OpState, s: ByteString, @@ -210,6 +184,7 @@ fn b64_decode(input: &[u8]) -> Result<Vec<u8>, AnyError> { Ok(out) } +#[op] fn op_base64_encode( _: &mut OpState, s: ZeroCopyBuf, @@ -218,6 +193,7 @@ fn op_base64_encode( Ok(b64_encode(&s)) } +#[op] fn op_base64_btoa( _: &mut OpState, s: ByteString, @@ -240,6 +216,7 @@ struct DecoderOptions { fatal: bool, } +#[op] fn op_encoding_normalize_label( _state: &mut OpState, label: String, @@ -255,6 +232,7 @@ fn op_encoding_normalize_label( Ok(encoding.name().to_lowercase()) } +#[op] fn op_encoding_new_decoder( state: &mut OpState, options: DecoderOptions, @@ -294,6 +272,7 @@ struct DecodeOptions { stream: bool, } +#[op] fn op_encoding_decode( state: &mut OpState, data: ZeroCopyBuf, @@ -357,6 +336,7 @@ struct EncodeIntoResult { written: usize, } +#[op] fn op_encoding_encode_into( _state: &mut OpState, input: String, diff --git a/ext/web/message_port.rs b/ext/web/message_port.rs index 8734f9b65..7f2b18b3c 100644 --- a/ext/web/message_port.rs +++ b/ext/web/message_port.rs @@ -4,6 +4,8 @@ use std::rc::Rc; use deno_core::error::type_error; use deno_core::error::AnyError; +use deno_core::op; + use deno_core::ZeroCopyBuf; use deno_core::{CancelFuture, Resource}; use deno_core::{CancelHandle, OpState}; @@ -104,6 +106,7 @@ impl Resource for MessagePortResource { } } +#[op] pub fn op_message_port_create_entangled( state: &mut OpState, _: (), @@ -185,6 +188,7 @@ pub struct JsMessageData { transferables: Vec<JsTransferable>, } +#[op] pub fn op_message_port_post_message( state: &mut OpState, rid: ResourceId, @@ -203,6 +207,7 @@ pub fn op_message_port_post_message( resource.port.send(state, data) } +#[op] pub async fn op_message_port_recv_message( state: Rc<RefCell<OpState>>, rid: ResourceId, diff --git a/ext/web/timers.rs b/ext/web/timers.rs index 7f17aa969..9a78240f7 100644 --- a/ext/web/timers.rs +++ b/ext/web/timers.rs @@ -3,6 +3,8 @@ //! This module helps deno implement timers and performance APIs. use deno_core::error::AnyError; +use deno_core::op; + use deno_core::CancelFuture; use deno_core::CancelHandle; use deno_core::OpState; @@ -25,6 +27,7 @@ pub type StartTime = Instant; // since the start time of the deno runtime. // If the High precision flag is not set, the // nanoseconds are rounded on 2ms. +#[op] pub fn op_now<TP>( state: &mut OpState, _argument: (), @@ -64,6 +67,7 @@ impl Resource for TimerHandle { /// Creates a [`TimerHandle`] resource that can be used to cancel invocations of /// [`op_sleep`]. +#[op] pub fn op_timer_handle( state: &mut OpState, _: (), @@ -77,6 +81,7 @@ pub fn op_timer_handle( /// Waits asynchronously until either `millis` milliseconds have passed or the /// [`TimerHandle`] resource given by `rid` has been canceled. +#[op] pub async fn op_sleep( state: Rc<RefCell<OpState>>, millis: u64, @@ -89,6 +94,7 @@ pub async fn op_sleep( Ok(()) } +#[op] pub fn op_sleep_sync<TP>( state: &mut OpState, millis: u64, |