diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2019-11-14 04:16:57 +0100 |
---|---|---|
committer | Ry Dahl <ry@tinyclouds.org> | 2019-11-13 22:16:57 -0500 |
commit | fd62379eafde6571f126df5650b80cfda9f74229 (patch) | |
tree | 34579151043837aaae17b36179c0aa5cf6b5e5aa /cli/lib.rs | |
parent | af448e864c4ac7e2ec601a25d46f95861ff5ade0 (diff) |
refactor: per-worker resource table (#3306)
- removes global `RESOURCE_TABLE` - resource tables are now created per `Worker`
in `State`
- renames `CliResource` to `StreamResource` and moves all logic related
to it to `cli/ops/io.rs`
- removes `cli/resources.rs`
- adds `state` argument to `op_read` and `op_write` and consequently adds
`stateful_minimal_op` to `State`
- IMPORTANT NOTE: workers don't have access to process stdio - this is
caused by fact that dropping worker would close stdout for process
(because it's constructed from raw handle, which closes underlying file
descriptor on drop)
Diffstat (limited to 'cli/lib.rs')
-rw-r--r-- | cli/lib.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/cli/lib.rs b/cli/lib.rs index 17ca94b55..3d772bb83 100644 --- a/cli/lib.rs +++ b/cli/lib.rs @@ -43,7 +43,6 @@ pub mod permissions; mod progress; mod repl; pub mod resolve_addr; -pub mod resources; mod shell; mod signal; pub mod source_maps; @@ -57,6 +56,7 @@ pub mod worker; use crate::deno_error::js_check; use crate::deno_error::print_err_and_exit; use crate::global_state::ThreadSafeGlobalState; +use crate::ops::io::get_stdio; use crate::progress::Progress; use crate::state::ThreadSafeState; use crate::worker::Worker; @@ -128,6 +128,15 @@ fn create_worker_and_state( .map_err(deno_error::print_err_and_exit) .unwrap(); + let state_ = state.clone(); + { + let mut resource_table = state_.lock_resource_table(); + let (stdin, stdout, stderr) = get_stdio(); + resource_table.add("stdin", Box::new(stdin)); + resource_table.add("stdout", Box::new(stdout)); + resource_table.add("stderr", Box::new(stderr)); + } + let worker = Worker::new( "main".to_string(), startup_data::deno_isolate_init(), |