You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@teaclave.apache.org by ms...@apache.org on 2020/02/02 20:02:00 UTC
[incubator-teaclave] 01/02: [ipc] DeserializeOwned => Dersialize
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 <bo...@mssun.me>
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: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org