From 5b31d0f846f95bc8f4f51ff59503e77c9caead2e Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Sun, 18 Apr 2021 15:29:06 +0200 Subject: [PATCH] cleanup(core): simplify op_async(), drop need for try_dispatch_op() (#10240) --- core/ops_json.rs | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/core/ops_json.rs b/core/ops_json.rs index cf2e6230b3..d368453d90 100644 --- a/core/ops_json.rs +++ b/core/ops_json.rs @@ -4,7 +4,6 @@ use crate::error::AnyError; use crate::serialize_op_result; use crate::Op; use crate::OpFn; -use crate::OpPayload; use crate::OpState; use crate::ZeroCopyBuf; use serde::de::DeserializeOwned; @@ -81,33 +80,21 @@ where R: Future> + 'static, RV: Serialize + 'static, { - let try_dispatch_op = move |state: Rc>, - p: OpPayload, - buf: Option| - -> Result { - let pid = p.promise_id; - // Parse args - let args = p.deserialize()?; + Box::new(move |state, payload, buf| -> Op { + let pid = payload.promise_id; + // Deserialize args, sync error on failure + let args = match payload.deserialize() { + Ok(args) => args, + Err(err) => { + return Op::Sync(serialize_op_result(Err::<(), AnyError>(err), state)) + } + }; use crate::futures::FutureExt; let fut = op_fn(state.clone(), args, buf) .map(move |result| (pid, serialize_op_result(result, state))); - Ok(Op::Async(Box::pin(fut))) - }; - - Box::new( - move |state: Rc>, - p: OpPayload, - b: Option| - -> Op { - match try_dispatch_op(state.clone(), p, b) { - Ok(op) => op, - Err(err) => { - Op::Sync(serialize_op_result(Err::<(), AnyError>(err), state)) - } - } - }, - ) + Op::Async(Box::pin(fut)) + }) } #[cfg(test)]