summaryrefslogtreecommitdiff
path: root/cli/worker.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/worker.rs')
-rw-r--r--cli/worker.rs73
1 files changed, 36 insertions, 37 deletions
diff --git a/cli/worker.rs b/cli/worker.rs
index 3773871dc..3aaf92f48 100644
--- a/cli/worker.rs
+++ b/cli/worker.rs
@@ -1,5 +1,5 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-use crate::errors::get_error_class;
+
use crate::fmt_errors::JSError;
use crate::global_state::GlobalState;
use crate::inspector::DenoInspector;
@@ -7,7 +7,6 @@ use crate::ops;
use crate::ops::io::get_stdio;
use crate::startup_data;
use crate::state::State;
-use deno_core::Buf;
use deno_core::CoreIsolate;
use deno_core::ErrBox;
use deno_core::ModuleId;
@@ -32,25 +31,25 @@ use url::Url;
/// Events that are sent to host from child
/// worker.
pub enum WorkerEvent {
- Message(Buf),
+ Message(Box<[u8]>),
Error(ErrBox),
TerminalError(ErrBox),
}
pub struct WorkerChannelsInternal {
pub sender: mpsc::Sender<WorkerEvent>,
- pub receiver: mpsc::Receiver<Buf>,
+ pub receiver: mpsc::Receiver<Box<[u8]>>,
}
#[derive(Clone)]
pub struct WorkerHandle {
- pub sender: mpsc::Sender<Buf>,
+ pub sender: mpsc::Sender<Box<[u8]>>,
pub receiver: Arc<AsyncMutex<mpsc::Receiver<WorkerEvent>>>,
}
impl WorkerHandle {
/// Post message to worker as a host.
- pub fn post_message(&self, buf: Buf) -> Result<(), ErrBox> {
+ pub fn post_message(&self, buf: Box<[u8]>) -> Result<(), ErrBox> {
let mut sender = self.sender.clone();
sender.try_send(buf)?;
Ok(())
@@ -65,7 +64,7 @@ impl WorkerHandle {
}
fn create_channels() -> (WorkerChannelsInternal, WorkerHandle) {
- let (in_tx, in_rx) = mpsc::channel::<Buf>(1);
+ let (in_tx, in_rx) = mpsc::channel::<Box<[u8]>>(1);
let (out_tx, out_rx) = mpsc::channel::<WorkerEvent>(1);
let internal_channels = WorkerChannelsInternal {
sender: out_tx,
@@ -106,8 +105,12 @@ impl Worker {
startup_data: StartupData,
state: &Rc<State>,
) -> Self {
- let mut isolate =
- deno_core::EsIsolate::new(state.clone(), startup_data, false);
+ let mut isolate = deno_core::EsIsolate::new(
+ state.clone(),
+ state.clone(),
+ startup_data,
+ false,
+ );
{
let global_state = state.global_state.clone();
@@ -116,7 +119,6 @@ impl Worker {
core_state.set_js_error_create_fn(move |core_js_error| {
JSError::create(core_js_error, &global_state.ts_compiler)
});
- core_state.set_get_error_class_fn(&get_error_class);
}
let inspector = {
@@ -256,31 +258,30 @@ pub struct MainWorker(Worker);
impl MainWorker {
// TODO(ry) combine MainWorker::new and MainWorker::create.
fn new(name: String, startup_data: StartupData, state: &Rc<State>) -> Self {
- let mut worker = Worker::new(name, startup_data, state);
+ let worker = Worker::new(name, startup_data, state);
{
- let isolate = &mut worker.isolate;
- ops::runtime::init(isolate, &state);
- ops::runtime_compiler::init(isolate, &state);
- ops::errors::init(isolate, &state);
- ops::fetch::init(isolate, &state);
- ops::websocket::init(isolate, &state);
- ops::fs::init(isolate, &state);
- ops::fs_events::init(isolate, &state);
- ops::idna::init(isolate, &state);
- ops::io::init(isolate, &state);
- ops::plugin::init(isolate, &state);
- ops::net::init(isolate, &state);
- ops::tls::init(isolate, &state);
- ops::os::init(isolate, &state);
- ops::permissions::init(isolate, &state);
- ops::process::init(isolate, &state);
- ops::random::init(isolate, &state);
- ops::repl::init(isolate, &state);
- ops::resources::init(isolate, &state);
- ops::signal::init(isolate, &state);
- ops::timers::init(isolate, &state);
- ops::tty::init(isolate, &state);
- ops::worker_host::init(isolate, &state);
+ ops::runtime::init(&state);
+ ops::runtime_compiler::init(&state);
+ ops::errors::init(&state);
+ ops::fetch::init(&state);
+ ops::websocket::init(&state);
+ ops::fs::init(&state);
+ ops::fs_events::init(&state);
+ ops::idna::init(&state);
+ ops::io::init(&state);
+ ops::plugin::init(&state);
+ ops::net::init(&state);
+ ops::tls::init(&state);
+ ops::os::init(&state);
+ ops::permissions::init(&state);
+ ops::process::init(&state);
+ ops::random::init(&state);
+ ops::repl::init(&state);
+ ops::resources::init(&state);
+ ops::signal::init(&state);
+ ops::timers::init(&state);
+ ops::tty::init(&state);
+ ops::worker_host::init(&state);
}
Self(worker)
}
@@ -302,10 +303,8 @@ impl MainWorker {
&state,
);
{
- let (stdin, stdout, stderr) = get_stdio();
- let state_rc = CoreIsolate::state(&worker.isolate);
- let state = state_rc.borrow();
let mut t = state.resource_table.borrow_mut();
+ let (stdin, stdout, stderr) = get_stdio();
if let Some(stream) = stdin {
t.add("stdin", Box::new(stream));
}