summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-09-18 11:53:16 -0700
committerRyan Dahl <ry@tinyclouds.org>2018-09-25 17:02:49 -0400
commit4fd2b19f640d19e57511eb142b63e16c879ef6fd (patch)
treed45db774ca5d51ecaac5491aec68db0cbfdcdf27 /src/main.rs
parent7c128df4a041f3b2c04725a0f5f3320db684d067 (diff)
Make Deno multithreaded.
By using the tokio default runtime. This patch makes all of the ops thread safe. Adds libdeno to JS globals to make for easier testing. Preliminary work for #733.
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs27
1 files changed, 13 insertions, 14 deletions
diff --git a/src/main.rs b/src/main.rs
index 1f9ead019..b60f80513 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -7,6 +7,7 @@ extern crate msg_rs as msg;
extern crate rand;
extern crate tempfile;
extern crate tokio;
+extern crate tokio_executor;
extern crate url;
#[macro_use]
extern crate lazy_static;
@@ -25,9 +26,9 @@ pub mod handlers;
mod http;
mod isolate;
mod libdeno;
+mod tokio_util;
mod version;
-use isolate::Isolate;
use std::env;
static LOGGER: Logger = Logger;
@@ -49,18 +50,16 @@ impl log::Log for Logger {
fn main() {
log::set_logger(&LOGGER).unwrap();
-
let args = env::args().collect();
- let mut isolate = Isolate::new(args);
- flags::process(&isolate.flags);
-
- isolate
- .execute("deno_main.js", "denoMain();")
- .unwrap_or_else(|err| {
- error!("{}", err);
- std::process::exit(1);
- });
-
- // Start the Tokio event loop
- isolate.rt.run().expect("err");
+ let mut isolate = isolate::Isolate::new(args, handlers::msg_from_js);
+ flags::process(&isolate.state.flags);
+ tokio_util::init(|| {
+ isolate
+ .execute("deno_main.js", "denoMain();")
+ .unwrap_or_else(|err| {
+ error!("{}", err);
+ std::process::exit(1);
+ });
+ isolate.event_loop();
+ });
}