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]

Reply via email to