summaryrefslogtreecommitdiff
path: root/src/ops.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ops.rs')
-rw-r--r--src/ops.rs143
1 files changed, 59 insertions, 84 deletions
diff --git a/src/ops.rs b/src/ops.rs
index 9bca698ba..9266646ef 100644
--- a/src/ops.rs
+++ b/src/ops.rs
@@ -42,7 +42,7 @@ type OpResult = DenoResult<Buf>;
// TODO Ideally we wouldn't have to box the Op being returned.
// The box is just to make it easier to get a prototype refactor working.
type OpCreator =
- fn(state: Arc<IsolateState>, base: &msg::Base, data: &'static mut [u8])
+ fn(state: &Arc<IsolateState>, base: &msg::Base, data: &'static mut [u8])
-> Box<Op>;
// Hopefully Rust optimizes this away.
@@ -110,7 +110,7 @@ pub fn dispatch(
msg::enum_name_any(inner_type)
)),
};
- op_creator(isolate.state.clone(), &base, data)
+ op_creator(&isolate.state.clone(), &base, data)
};
let boxed_op = Box::new(
@@ -154,11 +154,11 @@ pub fn dispatch(
msg::enum_name_any(inner_type),
base.sync()
);
- return (base.sync(), boxed_op);
+ (base.sync(), boxed_op)
}
fn op_exit(
- _config: Arc<IsolateState>,
+ _config: &Arc<IsolateState>,
base: &msg::Base,
_data: &'static mut [u8],
) -> Box<Op> {
@@ -167,7 +167,7 @@ fn op_exit(
}
fn op_start(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -238,7 +238,7 @@ fn odd_future(err: DenoError) -> Box<Op> {
// https://github.com/denoland/deno/blob/golang/os.go#L100-L154
fn op_code_fetch(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -281,7 +281,7 @@ fn op_code_fetch(
// https://github.com/denoland/deno/blob/golang/os.go#L156-L169
fn op_code_cache(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -300,7 +300,7 @@ fn op_code_cache(
}
fn op_chdir(
- _state: Arc<IsolateState>,
+ _state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -308,7 +308,7 @@ fn op_chdir(
let inner = base.inner_as_chdir().unwrap();
let directory = inner.directory().unwrap();
Box::new(futures::future::result(|| -> OpResult {
- let _result = std::env::set_current_dir(&directory)?;
+ std::env::set_current_dir(&directory)?;
Ok(empty_buf())
}()))
}
@@ -330,7 +330,7 @@ fn op_set_timeout(
}
fn op_set_env(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -346,7 +346,7 @@ fn op_set_env(
}
fn op_env(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -364,10 +364,7 @@ fn op_env(
let tables = builder.create_vector(&vars);
let inner = msg::EnvironRes::create(
builder,
- &msg::EnvironResArgs {
- map: Some(tables),
- ..Default::default()
- },
+ &msg::EnvironResArgs { map: Some(tables) },
);
ok_future(serialize_response(
cmd_id,
@@ -381,7 +378,7 @@ fn op_env(
}
fn op_fetch(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -400,7 +397,7 @@ fn op_fetch(
debug!("Before fetch {}", url);
let future = client.get(url).and_then(move |res| {
- let status = res.status().as_u16() as i32;
+ let status = i32::from(res.status().as_u16());
debug!("fetch {}", status);
let headers = {
@@ -445,7 +442,6 @@ fn op_fetch(
body: Some(body_off),
header_key: Some(header_keys_off),
header_value: Some(header_values_off),
- ..Default::default()
},
);
@@ -474,7 +470,7 @@ where
Ok(Ready(Ok(v))) => Ok(v.into()),
Ok(Ready(Err(err))) => Err(err),
Ok(NotReady) => Ok(NotReady),
- Err(_) => panic!("blocking error"),
+ Err(_err) => panic!("blocking error"),
}
}
@@ -496,7 +492,7 @@ macro_rules! blocking {
}
fn op_make_temp_dir(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -530,7 +526,6 @@ fn op_make_temp_dir(
builder,
&msg::MakeTempDirResArgs {
path: Some(path_off),
- ..Default::default()
},
);
Ok(serialize_response(
@@ -546,7 +541,7 @@ fn op_make_temp_dir(
}
fn op_mkdir(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -566,7 +561,7 @@ fn op_mkdir(
}
fn op_chmod(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -596,7 +591,7 @@ fn op_chmod(
}
fn op_open(
- _state: Arc<IsolateState>,
+ _state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -607,17 +602,12 @@ fn op_open(
// TODO let perm = inner.perm();
let op = tokio::fs::File::open(filename)
- .map_err(|err| DenoError::from(err))
+ .map_err(DenoError::from)
.and_then(move |fs_file| -> OpResult {
let resource = resources::add_fs_file(fs_file);
let builder = &mut FlatBufferBuilder::new();
- let inner = msg::OpenRes::create(
- builder,
- &msg::OpenResArgs {
- rid: resource.rid,
- ..Default::default()
- },
- );
+ let inner =
+ msg::OpenRes::create(builder, &msg::OpenResArgs { rid: resource.rid });
Ok(serialize_response(
cmd_id,
builder,
@@ -632,7 +622,7 @@ fn op_open(
}
fn op_close(
- _state: Arc<IsolateState>,
+ _state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -649,7 +639,7 @@ fn op_close(
}
fn op_shutdown(
- _state: Arc<IsolateState>,
+ _state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -675,7 +665,7 @@ fn op_shutdown(
}
fn op_read(
- _state: Arc<IsolateState>,
+ _state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -687,7 +677,7 @@ fn op_read(
None => odd_future(errors::bad_resource()),
Some(resource) => {
let op = resources::eager_read(resource, data)
- .map_err(|err| DenoError::from(err))
+ .map_err(DenoError::from)
.and_then(move |(_resource, _buf, nread)| {
let builder = &mut FlatBufferBuilder::new();
let inner = msg::ReadRes::create(
@@ -695,7 +685,6 @@ fn op_read(
&msg::ReadResArgs {
nread: nread as u32,
eof: nread == 0,
- ..Default::default()
},
);
Ok(serialize_response(
@@ -714,7 +703,7 @@ fn op_read(
}
fn op_write(
- _state: Arc<IsolateState>,
+ _state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -726,14 +715,13 @@ fn op_write(
None => odd_future(errors::bad_resource()),
Some(resource) => {
let op = resources::eager_write(resource, data)
- .map_err(|err| DenoError::from(err))
+ .map_err(DenoError::from)
.and_then(move |(_resource, _buf, nwritten)| {
let builder = &mut FlatBufferBuilder::new();
let inner = msg::WriteRes::create(
builder,
&msg::WriteResArgs {
nbyte: nwritten as u32,
- ..Default::default()
},
);
Ok(serialize_response(
@@ -752,7 +740,7 @@ fn op_write(
}
fn op_remove(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -771,12 +759,10 @@ fn op_remove(
let metadata = fs::metadata(&path)?;
if metadata.is_file() {
fs::remove_file(&path)?;
+ } else if recursive {
+ remove_dir_all(&path)?;
} else {
- if recursive {
- remove_dir_all(&path)?;
- } else {
- fs::remove_dir(&path)?;
- }
+ fs::remove_dir(&path)?;
}
Ok(empty_buf())
})
@@ -784,7 +770,7 @@ fn op_remove(
// Prototype https://github.com/denoland/deno/blob/golang/os.go#L171-L184
fn op_read_file(
- _config: Arc<IsolateState>,
+ _config: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -803,7 +789,6 @@ fn op_read_file(
builder,
&msg::ReadFileResArgs {
data: Some(data_off),
- ..Default::default()
},
);
Ok(serialize_response(
@@ -819,7 +804,7 @@ fn op_read_file(
}
fn op_copy_file(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -861,17 +846,17 @@ macro_rules! to_seconds {
}
#[cfg(any(unix))]
-fn get_mode(perm: fs::Permissions) -> u32 {
+fn get_mode(perm: &fs::Permissions) -> u32 {
perm.mode()
}
#[cfg(not(any(unix)))]
-fn get_mode(_perm: fs::Permissions) -> u32 {
+fn get_mode(_perm: &fs::Permissions) -> u32 {
0
}
fn op_cwd(
- _state: Arc<IsolateState>,
+ _state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -882,13 +867,8 @@ fn op_cwd(
let builder = &mut FlatBufferBuilder::new();
let cwd =
builder.create_string(&path.into_os_string().into_string().unwrap());
- let inner = msg::CwdRes::create(
- builder,
- &msg::CwdResArgs {
- cwd: Some(cwd),
- ..Default::default()
- },
- );
+ let inner =
+ msg::CwdRes::create(builder, &msg::CwdResArgs { cwd: Some(cwd) });
Ok(serialize_response(
cmd_id,
builder,
@@ -902,7 +882,7 @@ fn op_cwd(
}
fn op_stat(
- _config: Arc<IsolateState>,
+ _config: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -930,7 +910,7 @@ fn op_stat(
modified: to_seconds!(metadata.modified()),
accessed: to_seconds!(metadata.accessed()),
created: to_seconds!(metadata.created()),
- mode: get_mode(metadata.permissions()),
+ mode: get_mode(&metadata.permissions()),
has_mode: cfg!(target_family = "unix"),
..Default::default()
},
@@ -949,7 +929,7 @@ fn op_stat(
}
fn op_read_dir(
- _state: Arc<IsolateState>,
+ _state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -990,7 +970,6 @@ fn op_read_dir(
builder,
&msg::ReadDirResArgs {
entries: Some(entries),
- ..Default::default()
},
);
Ok(serialize_response(
@@ -1006,7 +985,7 @@ fn op_read_dir(
}
fn op_write_file(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -1026,7 +1005,7 @@ fn op_write_file(
}
fn op_rename(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -1046,7 +1025,7 @@ fn op_rename(
}
fn op_symlink(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -1075,7 +1054,7 @@ fn op_symlink(
}
fn op_read_link(
- _state: Arc<IsolateState>,
+ _state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -1093,7 +1072,6 @@ fn op_read_link(
builder,
&msg::ReadlinkResArgs {
path: Some(path_off),
- ..Default::default()
},
);
Ok(serialize_response(
@@ -1109,7 +1087,7 @@ fn op_read_link(
}
fn op_truncate(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -1126,13 +1104,13 @@ fn op_truncate(
blocking!(base.sync(), || {
debug!("op_truncate {} {}", filename, len);
let f = fs::OpenOptions::new().write(true).open(&filename)?;
- f.set_len(len as u64)?;
+ f.set_len(u64::from(len))?;
Ok(empty_buf())
})
}
fn op_listen(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -1147,6 +1125,9 @@ fn op_listen(
assert_eq!(network, "tcp");
let address = inner.address().unwrap();
+ // Ignore this clippy warning until this issue is addressed:
+ // https://github.com/rust-lang-nursery/rust-clippy/issues/1684
+ #[cfg_attr(feature = "cargo-clippy", allow(redundant_closure_call))]
Box::new(futures::future::result((move || {
// TODO properly parse addr
let addr = SocketAddr::from_str(address).unwrap();
@@ -1157,10 +1138,7 @@ fn op_listen(
let builder = &mut FlatBufferBuilder::new();
let inner = msg::ListenRes::create(
builder,
- &msg::ListenResArgs {
- rid: resource.rid,
- ..Default::default()
- },
+ &msg::ListenResArgs { rid: resource.rid },
);
Ok(serialize_response(
cmd_id,
@@ -1198,7 +1176,7 @@ fn new_conn(cmd_id: u32, tcp_stream: TcpStream) -> OpResult {
}
fn op_accept(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -1214,7 +1192,7 @@ fn op_accept(
None => odd_future(errors::bad_resource()),
Some(server_resource) => {
let op = resources::eager_accept(server_resource)
- .map_err(|err| DenoError::from(err))
+ .map_err(DenoError::from)
.and_then(move |(tcp_stream, _socket_addr)| {
new_conn(cmd_id, tcp_stream)
});
@@ -1224,7 +1202,7 @@ fn op_accept(
}
fn op_dial(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -1248,7 +1226,7 @@ fn op_dial(
}
fn op_metrics(
- state: Arc<IsolateState>,
+ state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -1266,7 +1244,6 @@ fn op_metrics(
bytes_sent_control: metrics.bytes_sent_control,
bytes_sent_data: metrics.bytes_sent_data,
bytes_received: metrics.bytes_received,
- ..Default::default()
},
);
ok_future(serialize_response(
@@ -1281,7 +1258,7 @@ fn op_metrics(
}
fn op_resources(
- _state: Arc<IsolateState>,
+ _state: &Arc<IsolateState>,
base: &msg::Base,
data: &'static mut [u8],
) -> Box<Op> {
@@ -1299,9 +1276,8 @@ fn op_resources(
msg::Resource::create(
builder,
&msg::ResourceArgs {
- rid: key.clone(),
+ rid: *key,
repr: Some(repr),
- ..Default::default()
},
)
}).collect();
@@ -1311,7 +1287,6 @@ fn op_resources(
builder,
&msg::ResourcesResArgs {
resources: Some(resources),
- ..Default::default()
},
);