diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2019-08-24 13:20:48 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-24 13:20:48 -0700 |
commit | 2235dd795d3cc6c24ff1bdd1bbdcd110b4b0bdfc (patch) | |
tree | a5811adc062cbb1c66f05c863c9be245cf4fd2d2 /cli/ops/repl.rs | |
parent | bdc0a13261deaa3748f51d9948b4e7b92864c324 (diff) |
Revert json ops (#2814)
* Revert "port more ops to JSON (#2809)"
This reverts commit 137f33733d365026903d40e7cde6e34ac6c36dcf.
* Revert "port ops to JSON: compiler, errors, fetch, files (#2804)"
This reverts commit 79f82cf10ed1dbf91346994250d7311a4d74377a.
* Revert "Port rest of os ops to JSON (#2802)"
This reverts commit 5b2baa5c990fbeae747e952c5dcd7a5369e950b1.
Diffstat (limited to 'cli/ops/repl.rs')
-rw-r--r-- | cli/ops/repl.rs | 86 |
1 files changed, 57 insertions, 29 deletions
diff --git a/cli/ops/repl.rs b/cli/ops/repl.rs index 7ab7509de..affe78739 100644 --- a/cli/ops/repl.rs +++ b/cli/ops/repl.rs @@ -1,50 +1,78 @@ // Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. -use super::dispatch_json::{blocking_json, Deserialize, JsonOp, Value}; +use super::dispatch_flatbuffers::serialize_response; +use super::utils::blocking; +use super::utils::ok_buf; +use super::utils::CliOpResult; +use crate::msg; use crate::repl; use crate::resources; use crate::state::ThreadSafeState; use deno::*; - -#[derive(Deserialize)] -#[serde(rename_all = "camelCase")] -struct ReplStartArgs { - history_file: String, -} +use flatbuffers::FlatBufferBuilder; pub fn op_repl_start( state: &ThreadSafeState, - args: Value, - _zero_copy: Option<PinnedBuf>, -) -> Result<JsonOp, ErrBox> { - let args: ReplStartArgs = serde_json::from_value(args)?; + base: &msg::Base<'_>, + data: Option<PinnedBuf>, +) -> CliOpResult { + assert!(data.is_none()); + let inner = base.inner_as_repl_start().unwrap(); + let cmd_id = base.cmd_id(); + let history_file = String::from(inner.history_file().unwrap()); - debug!("op_repl_start {}", args.history_file); - let history_path = repl::history_path(&state.dir, &args.history_file); + debug!("op_repl_start {}", history_file); + let history_path = repl::history_path(&state.dir, &history_file); let repl = repl::Repl::new(history_path); let resource = resources::add_repl(repl); - Ok(JsonOp::Sync(json!(resource.rid))) -} - -#[derive(Deserialize)] -struct ReplReadlineArgs { - rid: i32, - prompt: String, + let builder = &mut FlatBufferBuilder::new(); + let inner = msg::ReplStartRes::create( + builder, + &msg::ReplStartResArgs { rid: resource.rid }, + ); + ok_buf(serialize_response( + cmd_id, + builder, + msg::BaseArgs { + inner: Some(inner.as_union_value()), + inner_type: msg::Any::ReplStartRes, + ..Default::default() + }, + )) } pub fn op_repl_readline( _state: &ThreadSafeState, - args: Value, - _zero_copy: Option<PinnedBuf>, -) -> Result<JsonOp, ErrBox> { - let args: ReplReadlineArgs = serde_json::from_value(args)?; - let rid = args.rid; - let prompt = args.prompt; + base: &msg::Base<'_>, + data: Option<PinnedBuf>, +) -> CliOpResult { + assert!(data.is_none()); + let inner = base.inner_as_repl_readline().unwrap(); + let cmd_id = base.cmd_id(); + let rid = inner.rid(); + let prompt = inner.prompt().unwrap().to_owned(); debug!("op_repl_readline {} {}", rid, prompt); - blocking_json(false, move || { - let repl = resources::get_repl(rid as u32)?; + blocking(base.sync(), move || { + let repl = resources::get_repl(rid)?; let line = repl.lock().unwrap().readline(&prompt)?; - Ok(json!(line)) + + let builder = &mut FlatBufferBuilder::new(); + let line_off = builder.create_string(&line); + let inner = msg::ReplReadlineRes::create( + builder, + &msg::ReplReadlineResArgs { + line: Some(line_off), + }, + ); + Ok(serialize_response( + cmd_id, + builder, + msg::BaseArgs { + inner: Some(inner.as_union_value()), + inner_type: msg::Any::ReplReadlineRes, + ..Default::default() + }, + )) }) } |