summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-09-09 20:25:43 -0400
committerRyan Dahl <ry@tinyclouds.org>2018-09-10 00:14:28 -0400
commit35bc9ddf636734a424b8f69ca7a49af071193002 (patch)
tree2f5e0908859837110ee765968abf6317c200257e /src
parentc29392b25f6a7ade25a8205cabb9c3548e771ca2 (diff)
Implement deno.readFile()
As an example of how to implement ops that have both sync and async versions.
Diffstat (limited to 'src')
-rw-r--r--src/handlers.rs14
-rw-r--r--src/msg.fbs8
2 files changed, 11 insertions, 11 deletions
diff --git a/src/handlers.rs b/src/handlers.rs
index 780c9d2e4..586f3dbbf 100644
--- a/src/handlers.rs
+++ b/src/handlers.rs
@@ -50,7 +50,7 @@ pub extern "C" fn msg_from_js(d: *const DenoC, buf: deno_buf) {
msg::Any::TimerClear => handle_timer_clear,
msg::Any::MakeTempDir => handle_make_temp_dir,
msg::Any::MkdirSync => handle_mkdir_sync,
- msg::Any::ReadFileSync => handle_read_file_sync,
+ msg::Any::ReadFile => handle_read_file,
msg::Any::RenameSync => handle_rename_sync,
msg::Any::SetEnv => handle_set_env,
msg::Any::StatSync => handle_stat_sync,
@@ -430,20 +430,20 @@ fn handle_mkdir_sync(d: *const DenoC, base: &msg::Base) -> Box<Op> {
}
// Prototype https://github.com/denoland/deno/blob/golang/os.go#L171-L184
-fn handle_read_file_sync(_d: *const DenoC, base: &msg::Base) -> Box<Op> {
- let msg = base.msg_as_read_file_sync().unwrap();
+fn handle_read_file(_d: *const DenoC, base: &msg::Base) -> Box<Op> {
+ let msg = base.msg_as_read_file().unwrap();
let cmd_id = base.cmd_id();
let filename = String::from(msg.filename().unwrap());
Box::new(futures::future::result(|| -> OpResult {
- debug!("handle_read_file_sync {}", filename);
+ debug!("handle_read_file {}", filename);
let vec = fs::read(Path::new(&filename))?;
// Build the response message. memcpy data into msg.
// TODO(ry) zero-copy.
let builder = &mut FlatBufferBuilder::new();
let data_off = builder.create_vector(vec.as_slice());
- let msg = msg::ReadFileSyncRes::create(
+ let msg = msg::ReadFileRes::create(
builder,
- &msg::ReadFileSyncResArgs {
+ &msg::ReadFileResArgs {
data: Some(data_off),
..Default::default()
},
@@ -453,7 +453,7 @@ fn handle_read_file_sync(_d: *const DenoC, base: &msg::Base) -> Box<Op> {
builder,
msg::BaseArgs {
msg: Some(msg.as_union_value()),
- msg_type: msg::Any::ReadFileSyncRes,
+ msg_type: msg::Any::ReadFileRes,
..Default::default()
},
))
diff --git a/src/msg.fbs b/src/msg.fbs
index 5d55253b9..77aae8ffb 100644
--- a/src/msg.fbs
+++ b/src/msg.fbs
@@ -15,8 +15,8 @@ union Any {
MakeTempDir,
MakeTempDirRes,
MkdirSync,
- ReadFileSync,
- ReadFileSyncRes,
+ ReadFile,
+ ReadFileRes,
RenameSync,
StatSync,
StatSyncRes,
@@ -173,11 +173,11 @@ table MkdirSync {
// mode specified by https://godoc.org/os#FileMode
}
-table ReadFileSync {
+table ReadFile {
filename: string;
}
-table ReadFileSyncRes {
+table ReadFileRes {
data: [ubyte];
}