Skip to content

Commit b1d3126

Browse files
rybartlomieju
authored andcommitted
Revert "refactor: per-worker resource table (denoland#3306)"
This patch does not work with the recent bundler changes (denoland#3325). Unfortunately I didn't merge master before landing this patch. It has something to do with console.log not working inside the compiler worker. This reverts commit fd62379.
1 parent 9d22234 commit b1d3126

14 files changed

+336
-358
lines changed

cli/lib.rs

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ pub mod permissions;
4343
mod progress;
4444
mod repl;
4545
pub mod resolve_addr;
46+
pub mod resources;
4647
mod shell;
4748
mod signal;
4849
pub mod source_maps;
@@ -56,7 +57,6 @@ pub mod worker;
5657
use crate::deno_error::js_check;
5758
use crate::deno_error::print_err_and_exit;
5859
use crate::global_state::ThreadSafeGlobalState;
59-
use crate::ops::io::get_stdio;
6060
use crate::progress::Progress;
6161
use crate::state::ThreadSafeState;
6262
use crate::worker::Worker;
@@ -128,15 +128,6 @@ fn create_worker_and_state(
128128
.map_err(deno_error::print_err_and_exit)
129129
.unwrap();
130130

131-
let state_ = state.clone();
132-
{
133-
let mut resource_table = state_.lock_resource_table();
134-
let (stdin, stdout, stderr) = get_stdio();
135-
resource_table.add("stdin", Box::new(stdin));
136-
resource_table.add("stdout", Box::new(stdout));
137-
resource_table.add("stderr", Box::new(stderr));
138-
}
139-
140131
let worker = Worker::new(
141132
"main".to_string(),
142133
startup_data::deno_isolate_init(),

cli/ops/dispatch_minimal.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use deno::PinnedBuf;
1515
use futures::Future;
1616

1717
pub type MinimalOp = dyn Future<Item = i32, Error = ErrBox> + Send;
18+
pub type Dispatcher = fn(i32, Option<PinnedBuf>) -> Box<MinimalOp>;
1819

1920
#[derive(Copy, Clone, Debug, PartialEq)]
2021
// This corresponds to RecordMinimal on the TS side.
@@ -111,10 +112,9 @@ fn test_parse_min_record() {
111112
assert_eq!(parse_min_record(&buf), None);
112113
}
113114

114-
pub fn minimal_op<D>(d: D) -> impl Fn(&[u8], Option<PinnedBuf>) -> CoreOp
115-
where
116-
D: Fn(i32, Option<PinnedBuf>) -> Box<MinimalOp>,
117-
{
115+
pub fn minimal_op(
116+
d: Dispatcher,
117+
) -> impl Fn(&[u8], Option<PinnedBuf>) -> CoreOp {
118118
move |control: &[u8], zero_copy: Option<PinnedBuf>| {
119119
let mut record = match parse_min_record(control) {
120120
Some(r) => r,

cli/ops/fetch.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
22
use super::dispatch_json::{Deserialize, JsonOp, Value};
3-
use super::io::StreamResource;
4-
use crate::http_body::HttpBody;
53
use crate::http_util::get_client;
64
use crate::ops::json_op;
5+
use crate::resources;
76
use crate::state::ThreadSafeState;
87
use deno::*;
98
use http::header::HeaderName;
@@ -55,17 +54,15 @@ pub fn op_fetch(
5554
request = request.header(name, v);
5655
}
5756
debug!("Before fetch {}", url);
58-
let state_ = state.clone();
5957
let future = request.send().map_err(ErrBox::from).and_then(move |res| {
6058
let status = res.status();
6159
let mut res_headers = Vec::new();
6260
for (key, val) in res.headers().iter() {
6361
res_headers.push((key.to_string(), val.to_str().unwrap().to_owned()));
6462
}
6563

66-
let body = HttpBody::from(res.into_body());
67-
let mut table = state_.lock_resource_table();
68-
let rid = table.add("httpBody", Box::new(StreamResource::HttpBody(body)));
64+
let body = res.into_body();
65+
let rid = resources::add_reqwest_body(body);
6966

7067
let json_res = json!({
7168
"bodyRid": rid,

cli/ops/files.rs

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
22
use super::dispatch_json::{Deserialize, JsonOp, Value};
3-
use super::io::StreamResource;
43
use crate::deno_error::bad_resource;
54
use crate::deno_error::DenoError;
65
use crate::deno_error::ErrorKind;
76
use crate::fs as deno_fs;
87
use crate::ops::json_op;
8+
use crate::resources;
9+
use crate::resources::CliResource;
910
use crate::state::ThreadSafeState;
1011
use deno::*;
1112
use futures::Future;
@@ -37,7 +38,7 @@ fn op_open(
3738
let args: OpenArgs = serde_json::from_value(args)?;
3839
let (filename, filename_) = deno_fs::resolve_from_cwd(&args.filename)?;
3940
let mode = args.mode.as_ref();
40-
let state_ = state.clone();
41+
4142
let mut open_options = tokio::fs::OpenOptions::new();
4243

4344
match mode {
@@ -90,8 +91,7 @@ fn op_open(
9091
let is_sync = args.promise_id.is_none();
9192
let op = open_options.open(filename).map_err(ErrBox::from).and_then(
9293
move |fs_file| {
93-
let mut table = state_.lock_resource_table();
94-
let rid = table.add("fsFile", Box::new(StreamResource::FsFile(fs_file)));
94+
let rid = resources::add_fs_file(fs_file);
9595
futures::future::ok(json!(rid))
9696
},
9797
);
@@ -110,35 +110,35 @@ struct CloseArgs {
110110
}
111111

112112
fn op_close(
113-
state: &ThreadSafeState,
113+
_state: &ThreadSafeState,
114114
args: Value,
115115
_zero_copy: Option<PinnedBuf>,
116116
) -> Result<JsonOp, ErrBox> {
117117
let args: CloseArgs = serde_json::from_value(args)?;
118118

119-
let mut table = state.lock_resource_table();
119+
let mut table = resources::lock_resource_table();
120120
table.close(args.rid as u32).ok_or_else(bad_resource)?;
121121
Ok(JsonOp::Sync(json!({})))
122122
}
123123

124+
#[derive(Debug)]
124125
pub struct SeekFuture {
125126
seek_from: SeekFrom,
126127
rid: ResourceId,
127-
state: ThreadSafeState,
128128
}
129129

130130
impl Future for SeekFuture {
131131
type Item = u64;
132132
type Error = ErrBox;
133133

134134
fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
135-
let mut table = self.state.lock_resource_table();
135+
let mut table = resources::lock_resource_table();
136136
let resource = table
137-
.get_mut::<StreamResource>(self.rid)
137+
.get_mut::<CliResource>(self.rid)
138138
.ok_or_else(bad_resource)?;
139139

140140
let tokio_file = match resource {
141-
StreamResource::FsFile(ref mut file) => file,
141+
CliResource::FsFile(ref mut file) => file,
142142
_ => return Err(bad_resource()),
143143
};
144144

@@ -156,7 +156,7 @@ struct SeekArgs {
156156
}
157157

158158
fn op_seek(
159-
state: &ThreadSafeState,
159+
_state: &ThreadSafeState,
160160
args: Value,
161161
_zero_copy: Option<PinnedBuf>,
162162
) -> Result<JsonOp, ErrBox> {
@@ -177,11 +177,7 @@ fn op_seek(
177177
}
178178
};
179179

180-
let fut = SeekFuture {
181-
state: state.clone(),
182-
seek_from,
183-
rid,
184-
};
180+
let fut = SeekFuture { seek_from, rid };
185181

186182
let op = fut.and_then(move |_| futures::future::ok(json!({})));
187183
if args.promise_id.is_none() {

0 commit comments

Comments
 (0)