summaryrefslogtreecommitdiff
path: root/cli/ops/dispatch_json.rs
diff options
context:
space:
mode:
authorValentin Anger <syrupthinker@gryphno.de>2020-07-08 17:23:50 +0200
committerGitHub <noreply@github.com>2020-07-08 11:23:50 -0400
commitbe7e0f2d490ca480aaa154845c4c5c6dccbd7546 (patch)
treeb2a2d284c490a2a1cd8ec3b6175ea5d4077cc65e /cli/ops/dispatch_json.rs
parentcbbd9443592f79f6abf9e5019840de4e01ff8580 (diff)
BREAKING(core): Remove control slice from ops (#6048)
Diffstat (limited to 'cli/ops/dispatch_json.rs')
-rw-r--r--cli/ops/dispatch_json.rs13
1 files changed, 6 insertions, 7 deletions
diff --git a/cli/ops/dispatch_json.rs b/cli/ops/dispatch_json.rs
index 97a02991f..26ffc7d33 100644
--- a/cli/ops/dispatch_json.rs
+++ b/cli/ops/dispatch_json.rs
@@ -46,7 +46,7 @@ struct AsyncArgs {
pub fn json_op<D>(
d: D,
-) -> impl Fn(&mut CoreIsolateState, &[u8], &mut [ZeroCopyBuf]) -> Op
+) -> impl Fn(&mut CoreIsolateState, &mut [ZeroCopyBuf]) -> Op
where
D: Fn(
&mut CoreIsolateState,
@@ -54,10 +54,9 @@ where
&mut [ZeroCopyBuf],
) -> Result<JsonOp, OpError>,
{
- move |isolate_state: &mut CoreIsolateState,
- control: &[u8],
- zero_copy: &mut [ZeroCopyBuf]| {
- let async_args: AsyncArgs = match serde_json::from_slice(control) {
+ move |isolate_state: &mut CoreIsolateState, zero_copy: &mut [ZeroCopyBuf]| {
+ assert!(!zero_copy.is_empty(), "Expected JSON string at position 0");
+ let async_args: AsyncArgs = match serde_json::from_slice(&zero_copy[0]) {
Ok(args) => args,
Err(e) => {
let buf = serialize_result(None, Err(OpError::from(e)));
@@ -67,9 +66,9 @@ where
let promise_id = async_args.promise_id;
let is_sync = promise_id.is_none();
- let result = serde_json::from_slice(control)
+ let result = serde_json::from_slice(&zero_copy[0])
.map_err(OpError::from)
- .and_then(|args| d(isolate_state, args, zero_copy));
+ .and_then(|args| d(isolate_state, args, &mut zero_copy[1..]));
// Convert to Op
match result {