summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-08-13 15:02:35 -0400
committerRyan Dahl <ry@tinyclouds.org>2018-08-16 08:40:11 -0400
commitd770cc18f80257b520c2cf9cdc5ddea707b38680 (patch)
treeb859dcb7c9774ff0e1886d226ce702a04b91634a /src
parent168d92f5d254a0671a1c34ca79d7b5600084b139 (diff)
Upgrade Rust Flatbuffers
Diffstat (limited to 'src')
-rw-r--r--src/handlers.rs42
-rw-r--r--src/msg.fbs6
2 files changed, 15 insertions, 33 deletions
diff --git a/src/handlers.rs b/src/handlers.rs
index f0c64e46e..6f2bc8c8e 100644
--- a/src/handlers.rs
+++ b/src/handlers.rs
@@ -2,14 +2,11 @@
use binding;
use binding::{deno_buf, deno_set_response, DenoC};
use flatbuffers;
-use flatbuffers::ByteStringOffset;
-use flatbuffers::LabeledUOffsetT;
use from_c;
use fs;
use futures;
use futures::sync::oneshot;
use libc::c_char;
-use mem;
use msg_generated::deno as msg;
use std::ffi::CStr;
use std::path::Path;
@@ -38,7 +35,7 @@ fn reply_error(d: *const DenoC, cmd_id: u32, msg: &String) {
// println!("reply_error{}", msg);
let args = msg::BaseArgs {
cmdId: cmd_id,
- error: builder.create_string(msg),
+ error: Some(builder.create_string(msg)),
..Default::default()
};
set_response_base(d, &mut builder, &args)
@@ -49,7 +46,7 @@ fn create_msg(
args: &msg::BaseArgs,
) -> deno_buf {
let base = msg::CreateBase(builder, &args);
- builder.finish(base);
+ msg::FinishBaseBuffer(builder, base);
let data = builder.get_active_buf_slice();
deno_buf {
// TODO(ry)
@@ -112,22 +109,21 @@ pub extern "C" fn handle_code_fetch(
// reply_code_fetch
let mut builder = flatbuffers::FlatBufferBuilder::new();
let mut msg_args = msg::CodeFetchResArgs {
- module_name: builder.create_string(&out.module_name),
- filename: builder.create_string(&out.filename),
- source_code: builder.create_string(&out.source_code),
+ module_name: Some(builder.create_string(&out.module_name)),
+ filename: Some(builder.create_string(&out.filename)),
+ source_code: Some(builder.create_string(&out.source_code)),
..Default::default()
};
match out.maybe_output_code {
Some(ref output_code) => {
- msg_args.output_code = builder.create_string(output_code);
+ msg_args.output_code = Some(builder.create_string(output_code));
}
_ => (),
};
let msg = msg::CreateCodeFetchRes(&mut builder, &msg_args);
- builder.finish(msg);
let args = msg::BaseArgs {
cmdId: cmd_id,
- msg: Some(msg.union()),
+ msg: Some(flatbuffers::Offset::new(msg.value())),
msg_type: msg::Any::CodeFetchRes,
..Default::default()
};
@@ -219,12 +215,11 @@ fn send_timer_ready(d: *const DenoC, timer_id: u32, done: bool) {
..Default::default()
},
);
- builder.finish(msg);
send_base(
d,
&mut builder,
&msg::BaseArgs {
- msg: Some(msg.union()),
+ msg: Some(flatbuffers::Offset::new(msg.value())),
msg_type: msg::Any::TimerReady,
..Default::default()
},
@@ -250,35 +245,22 @@ pub extern "C" fn handle_read_file_sync(
}
// Build the response message. memcpy data into msg.
+ // TODO(ry) zero-copy.
let mut builder = flatbuffers::FlatBufferBuilder::new();
-
let vec = result.unwrap();
- //let data =
- // flatbuffers::LabeledUOffsetT::new(builder.push_bytes(vec.as_slice()));
-
- let data_ = builder.create_byte_vector(vec.as_slice());
-
- // TODO(ry) This is a hack that can be removed once builder.create_byte_vector
- // works properly.
- let data = unsafe {
- mem::transmute::<LabeledUOffsetT<ByteStringOffset>, LabeledUOffsetT<&[i8]>>(
- data_,
- )
- };
-
+ let data_off = builder.create_byte_vector(vec.as_slice());
let msg = msg::CreateReadFileSyncRes(
&mut builder,
&msg::ReadFileSyncResArgs {
- data,
+ data: Some(data_off),
..Default::default()
},
);
- builder.finish(msg);
set_response_base(
d,
&mut builder,
&msg::BaseArgs {
- msg: Some(msg.union()),
+ msg: Some(flatbuffers::Offset::new(msg.value())),
msg_type: msg::Any::ReadFileSyncRes,
..Default::default()
},
diff --git a/src/msg.fbs b/src/msg.fbs
index 46cea1e29..8126eb381 100644
--- a/src/msg.fbs
+++ b/src/msg.fbs
@@ -83,7 +83,7 @@ table FetchRes {
id: uint;
status: int;
header_line: [string];
- body: [byte];
+ body: [ubyte];
}
table ReadFileSync {
@@ -91,12 +91,12 @@ table ReadFileSync {
}
table ReadFileSyncRes {
- data: [byte];
+ data: [ubyte];
}
table WriteFileSync {
filename: string;
- data: [byte];
+ data: [ubyte];
perm: uint;
// perm specified by https://godoc.org/os#FileMode
}