This is an automated email from the ASF dual-hosted git repository. mssun pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/incubator-teaclave.git
commit 179ced1896f318618bbbad1eaa1d494fe1cbc5d1 Author: Mingshen Sun <[email protected]> AuthorDate: Sun Feb 2 09:43:17 2020 -0800 [ipc] DeserializeOwned => Dersialize --- binder/src/binder.rs | 5 ++--- ipc/src/channel/app_dep.rs | 5 ++--- ipc/src/channel/tee_dep.rs | 2 +- ipc/src/lib.rs | 9 ++++----- ipc/src/macros.rs | 8 ++++---- 5 files changed, 13 insertions(+), 16 deletions(-) diff --git a/binder/src/binder.rs b/binder/src/binder.rs index 2fbf130..d521174 100644 --- a/binder/src/binder.rs +++ b/binder/src/binder.rs @@ -18,8 +18,7 @@ use sgx_types::*; use sgx_urts::SgxEnclave; -use serde::de::DeserializeOwned; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use anyhow::Result; use teaclave_ipc::channel::ECallChannel; @@ -53,7 +52,7 @@ impl TeeBinder { pub fn invoke<U, V>(&self, cmd: u32, args_info: U) -> Result<V> where U: Serialize, - V: DeserializeOwned, + V: for<'de> Deserialize<'de>, { let mut channel = ECallChannel::new(self.enclave.geteid()); channel.invoke::<U, V>(cmd, args_info) diff --git a/ipc/src/channel/app_dep.rs b/ipc/src/channel/app_dep.rs index 776d54b..cd4d648 100644 --- a/ipc/src/channel/app_dep.rs +++ b/ipc/src/channel/app_dep.rs @@ -19,8 +19,7 @@ #[cfg(feature = "mesalock_sgx")] use std::prelude::v1::*; -use serde::de::DeserializeOwned; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use sgx_types::{sgx_enclave_id_t, sgx_status_t}; @@ -136,7 +135,7 @@ impl IpcSender for ECallChannel { fn invoke<U, V>(&mut self, cmd: u32, input: U) -> Result<V> where U: Serialize, - V: DeserializeOwned, + V: for<'de> Deserialize<'de>, { let request_payload = serde_json::to_vec(&input)?; let result_buf = self.ecall_ipc_app_to_tee(cmd, request_payload)?; diff --git a/ipc/src/channel/tee_dep.rs b/ipc/src/channel/tee_dep.rs index 9e8ef86..3302b22 100644 --- a/ipc/src/channel/tee_dep.rs +++ b/ipc/src/channel/tee_dep.rs @@ -33,7 +33,7 @@ pub struct ECallReceiver {} impl IpcReceiver for ECallReceiver { fn dispatch<U, V, X>(input_payload: &[u8], x: X) -> Result<Vec<u8>> where - U: serde::de::DeserializeOwned, + U: for<'de> serde::Deserialize<'de>, V: serde::Serialize, X: IpcService<U, V>, { diff --git a/ipc/src/lib.rs b/ipc/src/lib.rs index 7287475..6f80fb9 100644 --- a/ipc/src/lib.rs +++ b/ipc/src/lib.rs @@ -27,8 +27,7 @@ extern crate log; use std::prelude::v1::*; use anyhow::Result; -use serde::de::DeserializeOwned; -use serde::Serialize; +use serde::{Deserialize, Serialize}; // Intra-Process-Communication // Developer should split a process into two partitions, App and TEE. @@ -40,7 +39,7 @@ pub trait IpcSender { fn invoke<U, V>(&mut self, cmd: u32, input: U) -> Result<V> where U: Serialize, - V: DeserializeOwned; + V: for<'de> Deserialize<'de>; } // Service Instance of an IPC function @@ -48,7 +47,7 @@ pub trait IpcSender { // Generic V: ReturnInfo type pub trait IpcService<U, V> where - U: DeserializeOwned, + U: for<'de> Deserialize<'de>, V: Serialize, { fn handle_invoke(&self, input: U) -> Result<V>; @@ -62,7 +61,7 @@ where pub trait IpcReceiver { fn dispatch<U, V, X>(input: &[u8], x: X) -> Result<Vec<u8>> where - U: DeserializeOwned, + U: for<'de> Deserialize<'de>, V: Serialize, X: IpcService<U, V>; } diff --git a/ipc/src/macros.rs b/ipc/src/macros.rs index 360c368..aa5897a 100644 --- a/ipc/src/macros.rs +++ b/ipc/src/macros.rs @@ -40,7 +40,7 @@ macro_rules! register_ecall_handler { struct ServeInstance<U, V> where - U: HandleRequest<V> + serde::de::DeserializeOwned, + U: HandleRequest<V> + for<'de> serde::Deserialize<'de>, V: serde::Serialize, { u: std::marker::PhantomData<U>, @@ -49,7 +49,7 @@ macro_rules! register_ecall_handler { impl<U, V> ServeInstance<U, V> where - U: HandleRequest<V> + serde::de::DeserializeOwned, + U: HandleRequest<V> + for<'de> serde::Deserialize<'de>, V: serde::Serialize, { fn new() -> ServeInstance<U, V> { @@ -62,7 +62,7 @@ macro_rules! register_ecall_handler { impl<U, V> IpcService<U, V> for ServeInstance<U, V> where - U: HandleRequest<V> + serde::de::DeserializeOwned, + U: HandleRequest<V> + for<'de> serde::Deserialize<'de>, V: serde::Serialize, { fn handle_invoke(&self, input: U) -> anyhow::Result<V> { @@ -72,7 +72,7 @@ macro_rules! register_ecall_handler { fn dispatch_helper<U, V>(input: &[u8]) -> anyhow::Result<Vec<u8>> where - U: HandleRequest<V> + serde::de::DeserializeOwned, + U: HandleRequest<V> + for<'de> serde::Deserialize<'de>, V: serde::Serialize, { let instance = ServeInstance::<U, V>::new(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
