From b4e42953e1d243f2eda20e5be6b845d60b7bf688 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Mon, 14 Mar 2022 23:14:15 +0530 Subject: feat(core): codegen ops (#13861) Co-authored-by: Aaron O'Mullan --- ext/net/lib.rs | 5 +---- ext/net/ops.rs | 34 +++++++++++++++++++++------------- ext/net/ops_tls.rs | 19 ++++++++++++------- 3 files changed, 34 insertions(+), 24 deletions(-) (limited to 'ext/net') diff --git a/ext/net/lib.rs b/ext/net/lib.rs index c9b888a65..84358210e 100644 --- a/ext/net/lib.rs +++ b/ext/net/lib.rs @@ -76,9 +76,6 @@ pub fn init( unstable: bool, unsafely_ignore_certificate_errors: Option>, ) -> Extension { - let mut ops_to_register = vec![]; - ops_to_register.extend(ops::init::

()); - ops_to_register.extend(ops_tls::init::

()); Extension::builder() .js(include_js_files!( prefix "deno:ext/net", @@ -86,7 +83,7 @@ pub fn init( "02_tls.js", "04_net_unstable.js", )) - .ops(ops_to_register) + .ops([&ops::init::

()[..], &ops_tls::init::

()[..]].concat()) .state(move |state| { state.put(DefaultTlsOptions { root_cert_store: root_cert_store.clone(), diff --git a/ext/net/ops.rs b/ext/net/ops.rs index 682ba0acb..2c9129ebf 100644 --- a/ext/net/ops.rs +++ b/ext/net/ops.rs @@ -9,8 +9,8 @@ use deno_core::error::custom_error; use deno_core::error::generic_error; use deno_core::error::type_error; use deno_core::error::AnyError; -use deno_core::op_async; -use deno_core::op_sync; +use deno_core::op; + use deno_core::AsyncRefCell; use deno_core::ByteString; use deno_core::CancelHandle; @@ -52,14 +52,14 @@ use std::path::Path; pub fn init() -> Vec { vec![ - ("op_net_accept", op_async(op_net_accept)), - ("op_net_connect", op_async(op_net_connect::

)), - ("op_net_listen", op_sync(op_net_listen::

)), - ("op_dgram_recv", op_async(op_dgram_recv)), - ("op_dgram_send", op_async(op_dgram_send::

)), - ("op_dns_resolve", op_async(op_dns_resolve::

)), - ("op_set_nodelay", op_sync(op_set_nodelay::

)), - ("op_set_keepalive", op_sync(op_set_keepalive::

)), + op_net_accept::decl(), + op_net_connect::decl::

(), + op_net_listen::decl::

(), + op_dgram_recv::decl(), + op_dgram_send::decl::

(), + op_dns_resolve::decl::

(), + op_set_nodelay::decl::

(), + op_set_keepalive::decl::

(), ] } @@ -158,6 +158,7 @@ async fn accept_tcp( }) } +#[op] async fn op_net_accept( state: Rc>, args: AcceptArgs, @@ -210,6 +211,7 @@ async fn receive_udp( }) } +#[op] async fn op_dgram_recv( state: Rc>, args: ReceiveArgs, @@ -231,6 +233,7 @@ struct SendArgs { transport_args: ArgsEnum, } +#[op] async fn op_dgram_send( state: Rc>, args: SendArgs, @@ -299,6 +302,7 @@ pub struct ConnectArgs { transport_args: ArgsEnum, } +#[op] pub async fn op_net_connect( state: Rc>, args: ConnectArgs, @@ -474,6 +478,7 @@ fn listen_udp( Ok((rid, local_addr)) } +#[op] fn op_net_listen( state: &mut OpState, args: ListenArgs, @@ -613,6 +618,7 @@ pub struct NameServer { port: u16, } +#[op] pub async fn op_dns_resolve( state: Rc>, args: ResolveAddrArgs, @@ -681,6 +687,7 @@ where Ok(results) } +#[op] pub fn op_set_nodelay( state: &mut OpState, rid: ResourceId, @@ -692,6 +699,7 @@ pub fn op_set_nodelay( resource.set_nodelay(nodelay) } +#[op] pub fn op_set_keepalive( state: &mut OpState, rid: ResourceId, @@ -877,7 +885,7 @@ mod tests { #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn tcp_set_no_delay() { let set_nodelay = Box::new(|state: &mut OpState, rid| { - op_set_nodelay::(state, rid, true).unwrap(); + op_set_nodelay::call::(state, rid, true).unwrap(); }); let test_fn = Box::new(|socket: SockRef| { assert!(socket.nodelay().unwrap()); @@ -889,7 +897,7 @@ mod tests { #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn tcp_set_keepalive() { let set_keepalive = Box::new(|state: &mut OpState, rid| { - op_set_keepalive::(state, rid, true).unwrap(); + op_set_keepalive::call::(state, rid, true).unwrap(); }); let test_fn = Box::new(|socket: SockRef| { assert!(!socket.nodelay().unwrap()); @@ -934,7 +942,7 @@ mod tests { }; let connect_fut = - op_net_connect::(conn_state, connect_args, ()); + op_net_connect::call::(conn_state, connect_args, ()); let conn = connect_fut.await.unwrap(); let rid = conn.rid; diff --git a/ext/net/ops_tls.rs b/ext/net/ops_tls.rs index 01f29b2ad..6289d963f 100644 --- a/ext/net/ops_tls.rs +++ b/ext/net/ops_tls.rs @@ -25,8 +25,8 @@ use deno_core::futures::task::Poll; use deno_core::futures::task::RawWaker; use deno_core::futures::task::RawWakerVTable; use deno_core::futures::task::Waker; -use deno_core::op_async; -use deno_core::op_sync; +use deno_core::op; + use deno_core::parking_lot::Mutex; use deno_core::AsyncRefCell; use deno_core::AsyncResult; @@ -644,11 +644,11 @@ impl Write for ImplementWriteTrait<'_, TcpStream> { pub fn init() -> Vec { vec![ - ("op_tls_start", op_async(op_tls_start::

)), - ("op_tls_connect", op_async(op_tls_connect::

)), - ("op_tls_listen", op_sync(op_tls_listen::

)), - ("op_tls_accept", op_async(op_tls_accept)), - ("op_tls_handshake", op_async(op_tls_handshake)), + op_tls_start::decl::

(), + op_tls_connect::decl::

(), + op_tls_listen::decl::

(), + op_tls_accept::decl(), + op_tls_handshake::decl(), ] } @@ -765,6 +765,7 @@ pub struct StartTlsArgs { alpn_protocols: Option>, } +#[op] pub async fn op_tls_start( state: Rc>, args: StartTlsArgs, @@ -857,6 +858,7 @@ where }) } +#[op] pub async fn op_tls_connect( state: Rc>, args: ConnectTlsArgs, @@ -1016,6 +1018,7 @@ pub struct ListenTlsArgs { alpn_protocols: Option>, } +#[op] pub fn op_tls_listen( state: &mut OpState, args: ListenTlsArgs, @@ -1112,6 +1115,7 @@ where }) } +#[op] pub async fn op_tls_accept( state: Rc>, rid: ResourceId, @@ -1163,6 +1167,7 @@ pub async fn op_tls_accept( }) } +#[op] pub async fn op_tls_handshake( state: Rc>, rid: ResourceId, -- cgit v1.2.3