summaryrefslogtreecommitdiff
path: root/cli/lib.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2019-11-14 18:10:25 +0100
committerRy Dahl <ry@tinyclouds.org>2019-11-14 12:10:25 -0500
commit8b90b8e88325d28fe41d8312ea91417b6e66a12e (patch)
treea80d85de86353e05a5e59fe8b9890635dcbf200c /cli/lib.rs
parent38ffe8886db104068af07cd5efe3d83f42da8ed6 (diff)
refactor: per-worker resource table, take 2 (#3342)
- 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.rs11
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(),