diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-09-20 01:17:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-20 01:17:35 +0200 |
commit | b657d743a22802b8232fbf558f2f00bf2942096f (patch) | |
tree | e3a3047e78b6bd9c9e3f551f99f5e80e32de079d /cli/ops/net.rs | |
parent | aaa5e6613a739f8e2ff7579b69c2504bcdc37d4f (diff) |
refactor: remove CliState, use OpState, add CliModuleLoader (#7588)
- remove "CliState.workers" and "CliState.next_worker_id", instead
store them on "OpState" using type aliases.
- remove "CliState.global_timer" and "CliState.start_time", instead
store them on "OpState" using type aliases.
- remove "CliState.is_internal", instead pass it to Worker::new
- move "CliState::permissions" to "OpState"
- move "CliState::main_module" to "OpState"
- move "CliState::global_state" to "OpState"
- move "CliState::check_unstable()" to "GlobalState"
- change "cli_state()" to "global_state()"
- change "deno_core::ModuleLoader" trait to pass "OpState" to callbacks
- rename "CliState" to "CliModuleLoader"
Diffstat (limited to 'cli/ops/net.rs')
-rw-r--r-- | cli/ops/net.rs | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/cli/ops/net.rs b/cli/ops/net.rs index 44229f177..4e35f2247 100644 --- a/cli/ops/net.rs +++ b/cli/ops/net.rs @@ -2,6 +2,7 @@ use crate::ops::io::StreamResource; use crate::ops::io::StreamResourceHolder; +use crate::permissions::Permissions; use crate::resolve_addr::resolve_addr; use deno_core::error::bad_resource; use deno_core::error::bad_resource_id; @@ -189,7 +190,6 @@ async fn op_datagram_send( ) -> Result<Value, AnyError> { assert_eq!(zero_copy.len(), 1, "Invalid number of arguments"); let zero_copy = zero_copy[0].clone(); - let cli_state = super::cli_state2(&state); match serde_json::from_value(args)? { SendArgs { @@ -197,7 +197,11 @@ async fn op_datagram_send( transport, transport_args: ArgsEnum::Ip(args), } if transport == "udp" => { - cli_state.check_net(&args.hostname, args.port)?; + { + let s = state.borrow(); + s.borrow::<Permissions>() + .check_net(&args.hostname, args.port)?; + } let addr = resolve_addr(&args.hostname, args.port)?; poll_fn(move |cx| { let mut state = state.borrow_mut(); @@ -220,7 +224,10 @@ async fn op_datagram_send( transport_args: ArgsEnum::Unix(args), } if transport == "unixpacket" => { let address_path = Path::new(&args.path); - cli_state.check_read(&address_path)?; + { + let s = state.borrow(); + s.borrow::<Permissions>().check_read(&address_path)?; + } let mut state = state.borrow_mut(); let resource = state .resource_table @@ -251,13 +258,17 @@ async fn op_connect( args: Value, _zero_copy: BufVec, ) -> Result<Value, AnyError> { - let cli_state = super::cli_state2(&state); match serde_json::from_value(args)? { ConnectArgs { transport, transport_args: ArgsEnum::Ip(args), } if transport == "tcp" => { - cli_state.check_net(&args.hostname, args.port)?; + { + let state_ = state.borrow(); + state_ + .borrow::<Permissions>() + .check_net(&args.hostname, args.port)?; + } let addr = resolve_addr(&args.hostname, args.port)?; let tcp_stream = TcpStream::connect(&addr).await?; let local_addr = tcp_stream.local_addr()?; @@ -290,8 +301,12 @@ async fn op_connect( transport_args: ArgsEnum::Unix(args), } if transport == "unix" => { let address_path = Path::new(&args.path); + let cli_state = super::global_state2(&state); cli_state.check_unstable("Deno.connect"); - cli_state.check_read(&address_path)?; + { + let state_ = state.borrow(); + state_.borrow::<Permissions>().check_read(&address_path)?; + } let path = args.path; let unix_stream = net_unix::UnixStream::connect(Path::new(&path)).await?; let local_addr = unix_stream.local_addr()?; @@ -331,7 +346,7 @@ fn op_shutdown( args: Value, _zero_copy: &mut [ZeroCopyBuf], ) -> Result<Value, AnyError> { - super::cli_state(state).check_unstable("Deno.shutdown"); + super::global_state(state).check_unstable("Deno.shutdown"); let args: ShutdownArgs = serde_json::from_value(args)?; @@ -475,7 +490,8 @@ fn op_listen( args: Value, _zero_copy: &mut [ZeroCopyBuf], ) -> Result<Value, AnyError> { - let cli_state = super::cli_state(state); + let cli_state = super::global_state(state); + let permissions = state.borrow::<Permissions>(); match serde_json::from_value(args)? { ListenArgs { transport, @@ -485,7 +501,7 @@ fn op_listen( if transport == "udp" { cli_state.check_unstable("Deno.listenDatagram"); } - cli_state.check_net(&args.hostname, args.port)?; + permissions.check_net(&args.hostname, args.port)?; } let addr = resolve_addr(&args.hostname, args.port)?; let (rid, local_addr) = if transport == "tcp" { @@ -521,8 +537,8 @@ fn op_listen( if transport == "unixpacket" { cli_state.check_unstable("Deno.listenDatagram"); } - cli_state.check_read(&address_path)?; - cli_state.check_write(&address_path)?; + permissions.check_read(&address_path)?; + permissions.check_write(&address_path)?; } let (rid, local_addr) = if transport == "unix" { net_unix::listen_unix(state, &address_path)? |