This is an automated email from the ASF dual-hosted git repository.

hsun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-teaclave.git

commit 9b664385eda976cd983918e831aee24068a5a0cd
Author: GeminiCarrie <[email protected]>
AuthorDate: Thu Jun 1 12:27:02 2023 +0000

    Replace empty requests and responses with "google/protobuf/empty.proto"
---
 sdk/python/teaclave.py                             | 23 +++---
 sdk/rust/src/lib.rs                                | 88 +++++++---------------
 services/authentication/enclave/src/api_service.rs | 16 ++--
 services/frontend/enclave/src/service.rs           | 25 +++---
 services/management/enclave/src/service.rs         | 41 +++++-----
 .../proto/teaclave_authentication_service.proto    | 17 ++---
 .../src/proto/teaclave_frontend_service.proto      | 26 ++-----
 .../src/proto/teaclave_management_service.proto    | 13 ++--
 .../src/proto/teaclave_scheduler_service.proto     | 14 ++--
 .../proto/src/proto/teaclave_storage_service.proto | 14 ++--
 services/proto/src/teaclave_management_service.rs  |  6 --
 services/proto/src/teaclave_scheduler_service.rs   |  5 +-
 services/proto/src/teaclave_storage_service.rs     |  9 +--
 services/scheduler/enclave/src/service.rs          | 14 ++--
 services/storage/enclave/src/proxy.rs              | 28 +++----
 services/storage/enclave/src/service.rs            | 46 ++++-------
 tests/functional/enclave/src/end_to_end/mod.rs     |  6 +-
 17 files changed, 145 insertions(+), 246 deletions(-)

diff --git a/sdk/python/teaclave.py b/sdk/python/teaclave.py
index c19d325e..43032641 100644
--- a/sdk/python/teaclave.py
+++ b/sdk/python/teaclave.py
@@ -35,6 +35,7 @@ from cryptography import x509
 from cryptography.hazmat.backends import default_backend
 
 from google.protobuf.json_format import MessageToDict
+from google.protobuf.empty_pb2 import Empty
 from grpclib.client import Channel, _ChannelState
 from grpclib.protocol import H2Protocol
 
@@ -372,7 +373,7 @@ class UserRegisterRequest(Request):
 
     def __init__(self, metadata: Metadata, user_id: str, user_password: str,
                  role: str, attribute: str):
-        super().__init__("UserRegister", auth.UserRegisterResponse, metadata)
+        super().__init__("UserRegister", Empty, metadata)
         self.message = auth.UserRegisterRequest(id=user_id,
                                                 password=user_password,
                                                 role=role,
@@ -383,7 +384,7 @@ class UserUpdateRequest(Request):
 
     def __init__(self, metadata: Metadata, user_id: str, user_password: str,
                  role: str, attribute: str):
-        super().__init__("UserUpdate", auth.UserUpdateResponse)
+        super().__init__("UserUpdate", Empty)
         self.message = auth.UserUpdateRequest(id=user_id,
                                               password=user_password,
                                               role=role,
@@ -401,8 +402,7 @@ class UserLoginRequest(Request):
 class UserChangePasswordRequest(Request):
 
     def __init__(self, metadata: Metadata, password: str):
-        super().__init__("UserChangePassword", auth.UserChangePasswordResponse,
-                         metadata)
+        super().__init__("UserChangePassword", Empty, metadata)
         self.message = auth.UserChangePasswordRequest(password=password)
 
 
@@ -417,7 +417,7 @@ class ResetUserPasswordRequest(Request):
 class DeleteUserRequest(Request):
 
     def __init__(self, metadata: Metadata, user_id: str):
-        super().__init__("DeleteUser", auth.DeleteUserResponse, metadata)
+        super().__init__("DeleteUser", Empty, metadata)
         self.message = auth.DeleteUserRequest(id=user_id)
 
 
@@ -650,15 +650,14 @@ class ListFunctionsRequest(Request):
 class DeleteFunctionRequest(Request):
 
     def __init__(self, metadata: Metadata, function_id: str):
-        super().__init__("ListFunctions", fe.DeleteFunctionResponse, metadata)
+        super().__init__("ListFunctions", Empty, metadata)
         self.message = fe.DeleteFunctionRequest(function_id=function_id)
 
 
 class DisableFunctionRequest(Request):
 
     def __init__(self, metadata: Metadata, function_id: str):
-        super().__init__("DisableFunction", fe.DisableFunctionResponse,
-                         metadata)
+        super().__init__("DisableFunction", Empty, metadata)
         self.message = fe.DisableFunctionRequest(function_id=function_id)
 
 
@@ -734,7 +733,7 @@ class AssignDataRequest(Request):
 
     def __init__(self, metadata: Metadata, task_id: str, inputs: List[DataMap],
                  outputs: List[DataMap]):
-        super().__init__("AssignData", fe.AssignDataResponse, metadata)
+        super().__init__("AssignData", Empty, metadata)
         inputs = [x.message for x in inputs]
         outputs = [x.message for x in outputs]
         self.message = fe.AssignDataRequest(task_id=task_id,
@@ -745,21 +744,21 @@ class AssignDataRequest(Request):
 class ApproveTaskRequest(Request):
 
     def __init__(self, metadata: Metadata, task_id: str):
-        super().__init__("ApproveTask", fe.ApproveTaskResponse, metadata)
+        super().__init__("ApproveTask", Empty, metadata)
         self.message = fe.ApproveTaskRequest(task_id=task_id)
 
 
 class InvokeTaskRequest(Request):
 
     def __init__(self, metadata: Metadata, task_id: str):
-        super().__init__("InvokeTask", fe.InvokeTaskResponse, metadata)
+        super().__init__("InvokeTask", Empty, metadata)
         self.message = fe.InvokeTaskRequest(task_id=task_id)
 
 
 class CancelTaskRequest(Request):
 
     def __init__(self, metadata: Metadata, task_id: str):
-        super().__init__("CancelTask", fe.CancelTaskResponse, metadata)
+        super().__init__("CancelTask", Empty, metadata)
         self.message = fe.CancelTaskRequest(task_id=task_id)
 
 
diff --git a/sdk/rust/src/lib.rs b/sdk/rust/src/lib.rs
index f015c670..d38ec933 100644
--- a/sdk/rust/src/lib.rs
+++ b/sdk/rust/src/lib.rs
@@ -28,17 +28,16 @@ use tokio::runtime::Runtime;
 use url::Url;
 
 use teaclave_proto::teaclave_authentication_service_proto::{
-    UserLoginRequest, UserLoginResponse, UserRegisterRequest, 
UserRegisterResponse,
+    UserLoginRequest, UserLoginResponse, UserRegisterRequest,
 };
 pub use teaclave_proto::teaclave_frontend_service::GetFunctionResponse as 
Function;
 pub use teaclave_proto::teaclave_frontend_service::{
-    ApproveTaskRequest, ApproveTaskResponse, AssignDataRequest, 
AssignDataResponse,
-    CancelTaskRequest, CancelTaskResponse, CreateTaskRequest, 
CreateTaskResponse,
-    GetFunctionRequest, GetFunctionResponse, GetFunctionUsageStatsRequest,
+    ApproveTaskRequest, AssignDataRequest, CancelTaskRequest, 
CreateTaskRequest,
+    CreateTaskResponse, GetFunctionRequest, GetFunctionResponse, 
GetFunctionUsageStatsRequest,
     GetFunctionUsageStatsResponse, GetTaskRequest, GetTaskResponse, 
InvokeTaskRequest,
-    InvokeTaskResponse, RegisterFunctionRequest, 
RegisterFunctionRequestBuilder,
-    RegisterFunctionResponse, RegisterInputFileRequest, 
RegisterInputFileResponse,
-    RegisterOutputFileRequest, RegisterOutputFileResponse,
+    RegisterFunctionRequest, RegisterFunctionRequestBuilder, 
RegisterFunctionResponse,
+    RegisterInputFileRequest, RegisterInputFileResponse, 
RegisterOutputFileRequest,
+    RegisterOutputFileResponse,
 };
 pub use teaclave_types::{
     EnclaveInfo, Executor, FileCrypto, FunctionArgument, FunctionInput, 
FunctionOutput,
@@ -80,19 +79,14 @@ impl AuthenticationClient {
         self.client = 
TeaclaveAuthenticationApiClient::with_interceptor(self.channel.clone(), cred);
     }
 
-    pub fn user_register_with_request(
-        &mut self,
-        request: UserRegisterRequest,
-    ) -> Result<UserRegisterResponse> {
+    pub fn user_register_with_request(&mut self, request: UserRegisterRequest) 
-> Result<()> {
         do_request_with_credential!(self, user_register, request)
     }
 
     pub fn user_register_serialized(&mut self, serialized_request: &str) -> 
Result<String> {
         let request = serde_json::from_str(serialized_request)?;
-        let response = self.user_register_with_request(request)?;
-        let serialized_response = serde_json::to_string(&response)?;
-
-        Ok(serialized_response)
+        self.user_register_with_request(request)?;
+        Ok(String::new())
     }
 
     pub fn user_register(
@@ -103,9 +97,7 @@ impl AuthenticationClient {
         attribute: &str,
     ) -> Result<()> {
         let request = UserRegisterRequest::new(user_id, user_password, role, 
attribute);
-        let _response = self.user_register_with_request(request)?;
-
-        Ok(())
+        self.user_register_with_request(request)
     }
 
     pub fn user_login_with_request(
@@ -450,19 +442,14 @@ impl FrontendClient {
         Ok(response.task_id)
     }
 
-    pub fn assign_data_with_request(
-        &mut self,
-        request: AssignDataRequest,
-    ) -> Result<AssignDataResponse> {
+    pub fn assign_data_with_request(&mut self, request: AssignDataRequest) -> 
Result<()> {
         do_request_with_credential!(self, assign_data, request)
     }
 
     pub fn assign_data_serialized(&mut self, serialized_request: &str) -> 
Result<String> {
         let request = serde_json::from_str(serialized_request)?;
-        let response = self.assign_data_with_request(request)?;
-        let serialized_response = serde_json::to_string(&response)?;
-
-        Ok(serialized_response)
+        self.assign_data_with_request(request)?;
+        Ok(String::new())
     }
 
     pub fn assign_data(
@@ -485,53 +472,37 @@ impl FrontendClient {
             }
         }
         let request = AssignDataRequest::new(task_id.try_into()?, input_data, 
output_data);
-        let _ = self.assign_data_with_request(request)?;
-
-        Ok(())
+        self.assign_data_with_request(request)
     }
 
-    pub fn approve_task_with_request(
-        &mut self,
-        request: ApproveTaskRequest,
-    ) -> Result<ApproveTaskResponse> {
+    pub fn approve_task_with_request(&mut self, request: ApproveTaskRequest) 
-> Result<()> {
         do_request_with_credential!(self, approve_task, request)
     }
 
     pub fn approve_task(&mut self, task_id: &str) -> Result<()> {
         let request = ApproveTaskRequest::new(task_id.try_into()?);
-        let _ = self.approve_task_with_request(request)?;
-
-        Ok(())
+        self.approve_task_with_request(request)
     }
 
     pub fn approve_task_serialized(&mut self, serialized_request: &str) -> 
Result<String> {
         let request = serde_json::from_str(serialized_request)?;
-        let response = self.approve_task_with_request(request)?;
-        let serialized_response = serde_json::to_string(&response)?;
-
-        Ok(serialized_response)
+        self.approve_task_with_request(request)?;
+        Ok(String::new())
     }
 
-    pub fn invoke_task_with_request(
-        &mut self,
-        request: InvokeTaskRequest,
-    ) -> Result<InvokeTaskResponse> {
+    pub fn invoke_task_with_request(&mut self, request: InvokeTaskRequest) -> 
Result<()> {
         do_request_with_credential!(self, invoke_task, request)
     }
 
     pub fn invoke_task_serialized(&mut self, serialized_request: &str) -> 
Result<String> {
         let request = serde_json::from_str(serialized_request)?;
-        let response = self.invoke_task_with_request(request)?;
-        let serialized_response = serde_json::to_string(&response)?;
-
-        Ok(serialized_response)
+        self.invoke_task_with_request(request)?;
+        Ok(String::new())
     }
 
     pub fn invoke_task(&mut self, task_id: &str) -> Result<()> {
         let request = InvokeTaskRequest::new(task_id.try_into()?);
-        let _ = self.invoke_task_with_request(request)?;
-
-        Ok(())
+        self.invoke_task_with_request(request)
     }
 
     pub fn get_task_with_request(&mut self, request: GetTaskRequest) -> 
Result<GetTaskResponse> {
@@ -565,26 +536,19 @@ impl FrontendClient {
         }
     }
 
-    pub fn cancel_task_with_request(
-        &mut self,
-        request: CancelTaskRequest,
-    ) -> Result<CancelTaskResponse> {
+    pub fn cancel_task_with_request(&mut self, request: CancelTaskRequest) -> 
Result<()> {
         do_request_with_credential!(self, cancel_task, request)
     }
 
     pub fn cancel_task_serialized(&mut self, serialized_request: &str) -> 
Result<String> {
         let request = serde_json::from_str(serialized_request)?;
-        let response = self.cancel_task_with_request(request)?;
-        let serialized_response = serde_json::to_string(&response)?;
-
-        Ok(serialized_response)
+        self.cancel_task_with_request(request)?;
+        Ok(String::new())
     }
 
     pub fn cancel_task(&mut self, task_id: &str) -> Result<()> {
         let request = CancelTaskRequest::new(task_id.try_into()?);
-        let _ = self.cancel_task_with_request(request)?;
-
-        Ok(())
+        self.cancel_task_with_request(request)
     }
 }
 
diff --git a/services/authentication/enclave/src/api_service.rs 
b/services/authentication/enclave/src/api_service.rs
index 7fccd04a..875dcd27 100644
--- a/services/authentication/enclave/src/api_service.rs
+++ b/services/authentication/enclave/src/api_service.rs
@@ -88,7 +88,7 @@ impl TeaclaveAuthenticationApi for 
TeaclaveAuthenticationApiService {
     async fn user_register(
         &self,
         request: Request<UserRegisterRequest>,
-    ) -> TeaclaveServiceResponseResult<UserRegisterResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         let requester_role = self.validate_credential_in_request(&request)?;
 
         let request = request.get_ref();
@@ -112,7 +112,7 @@ impl TeaclaveAuthenticationApi for 
TeaclaveAuthenticationApiService {
 
         let new_user = UserInfo::new(&request.id, &request.password, role);
         match self.db_client.lock().unwrap().create_user(&new_user) {
-            Ok(_) => Ok(Response::new(UserRegisterResponse {})),
+            Ok(_) => Ok(Response::new(())),
             Err(e) => bail!(AuthenticationServiceError::Service(e.into())),
         }
     }
@@ -120,7 +120,7 @@ impl TeaclaveAuthenticationApi for 
TeaclaveAuthenticationApiService {
     async fn user_update(
         &self,
         request: Request<UserUpdateRequest>,
-    ) -> TeaclaveServiceResponseResult<UserUpdateResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         let requester_role = self.validate_credential_in_request(&request)?;
 
         let request = request.get_ref();
@@ -150,7 +150,7 @@ impl TeaclaveAuthenticationApi for 
TeaclaveAuthenticationApiService {
 
         let updated_user = UserInfo::new(&request.id, &request.password, role);
         match self.db_client.lock().unwrap().update_user(&updated_user) {
-            Ok(_) => Ok(Response::new(UserUpdateResponse {})),
+            Ok(_) => Ok(Response::new(())),
             Err(e) => bail!(AuthenticationServiceError::Service(e.into())),
         }
     }
@@ -188,7 +188,7 @@ impl TeaclaveAuthenticationApi for 
TeaclaveAuthenticationApiService {
     async fn user_change_password(
         &self,
         request: Request<UserChangePasswordRequest>,
-    ) -> TeaclaveServiceResponseResult<UserChangePasswordResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         let requester_role = self.validate_credential_in_request(&request)?;
 
         let id: String = request
@@ -205,7 +205,7 @@ impl TeaclaveAuthenticationApi for 
TeaclaveAuthenticationApiService {
         let updated_user = UserInfo::new(&id, &request.password, 
requester_role);
 
         match self.db_client.lock().unwrap().update_user(&updated_user) {
-            Ok(_) => Ok(Response::new(UserChangePasswordResponse {})),
+            Ok(_) => Ok(Response::new(())),
             Err(e) => bail!(AuthenticationServiceError::Service(e.into())),
         }
     }
@@ -249,7 +249,7 @@ impl TeaclaveAuthenticationApi for 
TeaclaveAuthenticationApiService {
     async fn delete_user(
         &self,
         request: Request<DeleteUserRequest>,
-    ) -> TeaclaveServiceResponseResult<DeleteUserResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         let requester_role = self.validate_credential_in_request(&request)?;
 
         let request = request.get_ref();
@@ -269,7 +269,7 @@ impl TeaclaveAuthenticationApi for 
TeaclaveAuthenticationApiService {
             AuthenticationServiceError::PermissionDenied
         );
         match self.db_client.lock().unwrap().delete_user(&request.id) {
-            Ok(_) => Ok(Response::new(DeleteUserResponse {})),
+            Ok(_) => Ok(Response::new(())),
             Err(e) => bail!(AuthenticationServiceError::Service(e.into())),
         }
     }
diff --git a/services/frontend/enclave/src/service.rs 
b/services/frontend/enclave/src/service.rs
index d2ac9b21..31a2d317 100644
--- a/services/frontend/enclave/src/service.rs
+++ b/services/frontend/enclave/src/service.rs
@@ -25,13 +25,12 @@ use teaclave_proto::teaclave_authentication_service::{
 };
 use teaclave_proto::teaclave_common::UserCredential;
 use teaclave_proto::teaclave_frontend_service::{
-    ApproveTaskRequest, ApproveTaskResponse, AssignDataRequest, 
AssignDataResponse,
-    CancelTaskRequest, CancelTaskResponse, CreateTaskRequest, 
CreateTaskResponse,
-    DeleteFunctionRequest, DeleteFunctionResponse, DisableFunctionRequest, 
DisableFunctionResponse,
-    GetFunctionRequest, GetFunctionResponse, GetFunctionUsageStatsRequest,
-    GetFunctionUsageStatsResponse, GetInputFileRequest, GetInputFileResponse, 
GetOutputFileRequest,
-    GetOutputFileResponse, GetTaskRequest, GetTaskResponse, InvokeTaskRequest, 
InvokeTaskResponse,
-    ListFunctionsRequest, ListFunctionsResponse, RegisterFunctionRequest, 
RegisterFunctionResponse,
+    ApproveTaskRequest, AssignDataRequest, CancelTaskRequest, 
CreateTaskRequest,
+    CreateTaskResponse, DeleteFunctionRequest, DisableFunctionRequest, 
GetFunctionRequest,
+    GetFunctionResponse, GetFunctionUsageStatsRequest, 
GetFunctionUsageStatsResponse,
+    GetInputFileRequest, GetInputFileResponse, GetOutputFileRequest, 
GetOutputFileResponse,
+    GetTaskRequest, GetTaskResponse, InvokeTaskRequest, ListFunctionsRequest,
+    ListFunctionsResponse, RegisterFunctionRequest, RegisterFunctionResponse,
     RegisterFusionOutputRequest, RegisterFusionOutputResponse, 
RegisterInputFileRequest,
     RegisterInputFileResponse, RegisterInputFromOutputRequest, 
RegisterInputFromOutputResponse,
     RegisterOutputFileRequest, RegisterOutputFileResponse, TeaclaveFrontend, 
UpdateFunctionRequest,
@@ -327,7 +326,7 @@ impl TeaclaveFrontend for TeaclaveFrontendService {
     async fn delete_function(
         &self,
         request: Request<DeleteFunctionRequest>,
-    ) -> TeaclaveServiceResponseResult<DeleteFunctionResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         authentication_and_forward_to_management!(
             self,
             request,
@@ -339,7 +338,7 @@ impl TeaclaveFrontend for TeaclaveFrontendService {
     async fn disable_function(
         &self,
         request: Request<DisableFunctionRequest>,
-    ) -> TeaclaveServiceResponseResult<DisableFunctionResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         authentication_and_forward_to_management!(
             self,
             request,
@@ -377,14 +376,14 @@ impl TeaclaveFrontend for TeaclaveFrontendService {
     async fn assign_data(
         &self,
         request: Request<AssignDataRequest>,
-    ) -> TeaclaveServiceResponseResult<AssignDataResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         authentication_and_forward_to_management!(self, request, assign_data, 
Endpoints::AssignData)
     }
 
     async fn approve_task(
         &self,
         request: Request<ApproveTaskRequest>,
-    ) -> TeaclaveServiceResponseResult<ApproveTaskResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         authentication_and_forward_to_management!(
             self,
             request,
@@ -396,14 +395,14 @@ impl TeaclaveFrontend for TeaclaveFrontendService {
     async fn invoke_task(
         &self,
         request: Request<InvokeTaskRequest>,
-    ) -> TeaclaveServiceResponseResult<InvokeTaskResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         authentication_and_forward_to_management!(self, request, invoke_task, 
Endpoints::InvokeTask)
     }
 
     async fn cancel_task(
         &self,
         request: Request<CancelTaskRequest>,
-    ) -> TeaclaveServiceResponseResult<CancelTaskResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         authentication_and_forward_to_management!(self, request, cancel_task, 
Endpoints::CancelTask)
     }
 }
diff --git a/services/management/enclave/src/service.rs 
b/services/management/enclave/src/service.rs
index 0abbd12e..5f666d67 100644
--- a/services/management/enclave/src/service.rs
+++ b/services/management/enclave/src/service.rs
@@ -24,13 +24,12 @@ use teaclave_proto::teaclave_frontend_service::{
     from_proto_file_ids, from_proto_ownership, to_proto_file_ids, 
to_proto_ownership,
 };
 use teaclave_proto::teaclave_frontend_service::{
-    ApproveTaskRequest, ApproveTaskResponse, AssignDataRequest, 
AssignDataResponse,
-    CancelTaskRequest, CancelTaskResponse, CreateTaskRequest, 
CreateTaskResponse,
-    DeleteFunctionRequest, DeleteFunctionResponse, DisableFunctionRequest, 
DisableFunctionResponse,
-    GetFunctionRequest, GetFunctionResponse, GetFunctionUsageStatsRequest,
-    GetFunctionUsageStatsResponse, GetInputFileRequest, GetInputFileResponse, 
GetOutputFileRequest,
-    GetOutputFileResponse, GetTaskRequest, GetTaskResponse, InvokeTaskRequest, 
InvokeTaskResponse,
-    ListFunctionsRequest, ListFunctionsResponse, RegisterFunctionRequest, 
RegisterFunctionResponse,
+    ApproveTaskRequest, AssignDataRequest, CancelTaskRequest, 
CreateTaskRequest,
+    CreateTaskResponse, DeleteFunctionRequest, DisableFunctionRequest, 
GetFunctionRequest,
+    GetFunctionResponse, GetFunctionUsageStatsRequest, 
GetFunctionUsageStatsResponse,
+    GetInputFileRequest, GetInputFileResponse, GetOutputFileRequest, 
GetOutputFileResponse,
+    GetTaskRequest, GetTaskResponse, InvokeTaskRequest, ListFunctionsRequest,
+    ListFunctionsResponse, RegisterFunctionRequest, RegisterFunctionResponse,
     RegisterFusionOutputRequest, RegisterFusionOutputResponse, 
RegisterInputFileRequest,
     RegisterInputFileResponse, RegisterInputFromOutputRequest, 
RegisterInputFromOutputResponse,
     RegisterOutputFileRequest, RegisterOutputFileResponse, 
UpdateFunctionRequest,
@@ -452,7 +451,7 @@ impl TeaclaveManagement for TeaclaveManagementService {
     async fn delete_function(
         &self,
         request: Request<DeleteFunctionRequest>,
-    ) -> TeaclaveServiceResponseResult<DeleteFunctionResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         let user_id = get_request_user_id(&request)?;
         let function_id = request
             .into_inner()
@@ -471,8 +470,8 @@ impl TeaclaveManagement for TeaclaveManagementService {
         self.delete_from_db(&function_id)
             .await
             .map_err(|_| ManagementServiceError::InvalidFunctionId)?;
-        let response = DeleteFunctionResponse {};
-        Ok(Response::new(response))
+
+        Ok(Response::new(()))
     }
 
     // access control: function.owner == user_id
@@ -482,7 +481,7 @@ impl TeaclaveManagement for TeaclaveManagementService {
     async fn disable_function(
         &self,
         request: Request<DisableFunctionRequest>,
-    ) -> TeaclaveServiceResponseResult<DisableFunctionResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         let user_id = get_request_user_id(&request)?;
         let role = get_request_role(&request)?;
         let function_id = request
@@ -537,8 +536,8 @@ impl TeaclaveManagement for TeaclaveManagementService {
 
         function.user_allowlist.clear();
         self.write_to_db(&function).await?;
-        let response = DisableFunctionResponse {};
-        Ok(Response::new(response))
+
+        Ok(Response::new(()))
     }
 
     // access contro: user_id = request.user_id
@@ -699,7 +698,7 @@ impl TeaclaveManagement for TeaclaveManagementService {
     async fn assign_data(
         &self,
         request: Request<AssignDataRequest>,
-    ) -> TeaclaveServiceResponseResult<AssignDataResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         let user_id = get_request_user_id(&request)?;
         let request = request.into_inner();
         let task_id = request
@@ -745,7 +744,7 @@ impl TeaclaveManagement for TeaclaveManagementService {
         let ts: TaskState = task.into();
         self.write_to_db(&ts).await?;
 
-        Ok(Response::new(AssignDataResponse {}))
+        Ok(Response::new(()))
     }
 
     // access_control:
@@ -754,7 +753,7 @@ impl TeaclaveManagement for TeaclaveManagementService {
     async fn approve_task(
         &self,
         request: Request<ApproveTaskRequest>,
-    ) -> TeaclaveServiceResponseResult<ApproveTaskResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         let user_id = get_request_user_id(&request)?;
 
         let task_id = request
@@ -781,7 +780,7 @@ impl TeaclaveManagement for TeaclaveManagementService {
         let ts: TaskState = task.into();
         self.write_to_db(&ts).await?;
 
-        Ok(Response::new(ApproveTaskResponse {}))
+        Ok(Response::new(()))
     }
 
     // access_control:
@@ -790,7 +789,7 @@ impl TeaclaveManagement for TeaclaveManagementService {
     async fn invoke_task(
         &self,
         request: Request<InvokeTaskRequest>,
-    ) -> TeaclaveServiceResponseResult<InvokeTaskResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         let user_id = get_request_user_id(&request)?;
         let task_id = request
             .into_inner()
@@ -851,7 +850,7 @@ impl TeaclaveManagement for TeaclaveManagementService {
 
         function_usage.use_numbers = function_current_use_numbers + 1;
         self.write_to_db(&function_usage).await?;
-        Ok(Response::new(InvokeTaskResponse {}))
+        Ok(Response::new(()))
     }
 
     // access_control:
@@ -860,7 +859,7 @@ impl TeaclaveManagement for TeaclaveManagementService {
     async fn cancel_task(
         &self,
         request: Request<CancelTaskRequest>,
-    ) -> TeaclaveServiceResponseResult<CancelTaskResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         let user_id = get_request_user_id(&request)?;
         let role = get_request_role(&request)?;
         let task_id = request
@@ -913,7 +912,7 @@ impl TeaclaveManagement for TeaclaveManagementService {
             }
         }
 
-        Ok(Response::new(CancelTaskResponse {}))
+        Ok(Response::new(()))
     }
 }
 
diff --git a/services/proto/src/proto/teaclave_authentication_service.proto 
b/services/proto/src/proto/teaclave_authentication_service.proto
index 77e42ed0..bdac5f79 100644
--- a/services/proto/src/proto/teaclave_authentication_service.proto
+++ b/services/proto/src/proto/teaclave_authentication_service.proto
@@ -22,6 +22,7 @@ syntax = "proto3";
 package teaclave_authentication_service_proto;
 
 import "teaclave_common.proto";
+import "google/protobuf/empty.proto";
 
 message UserRegisterRequest {
   string id = 1;
@@ -30,8 +31,6 @@ message UserRegisterRequest {
   string attribute = 4;
 }
 
-message UserRegisterResponse { }
-
 message UserUpdateRequest {
     string id = 1;
     string password = 2;
@@ -39,8 +38,6 @@ message UserUpdateRequest {
     string attribute = 4;
 }
 
-message UserUpdateResponse { }
-
 message UserLoginRequest {
   string id = 1;
   string password = 2;
@@ -85,21 +82,17 @@ message UserChangePasswordRequest {
   string password = 1;
 }
 
-message UserChangePasswordResponse {}
-
 message DeleteUserRequest {
   string id = 1;
 }
 
-message DeleteUserResponse {}
-
 service TeaclaveAuthenticationApi {
-  rpc UserRegister(UserRegisterRequest) returns (UserRegisterResponse);
-  rpc UserUpdate(UserUpdateRequest) returns (UserUpdateResponse);
+  rpc UserRegister(UserRegisterRequest) returns (google.protobuf.Empty);
+  rpc UserUpdate(UserUpdateRequest) returns (google.protobuf.Empty);
   rpc UserLogin (UserLoginRequest) returns (UserLoginResponse);
-  rpc UserChangePassword (UserChangePasswordRequest) returns 
(UserChangePasswordResponse);
+  rpc UserChangePassword (UserChangePasswordRequest) returns 
(google.protobuf.Empty);
   rpc ResetUserPassword (ResetUserPasswordRequest) returns 
(ResetUserPasswordResponse);
-  rpc DeleteUser (DeleteUserRequest) returns (DeleteUserResponse);
+  rpc DeleteUser (DeleteUserRequest) returns (google.protobuf.Empty);
   rpc ListUsers(ListUsersRequest) returns (ListUsersResponse);
 }
 
diff --git a/services/proto/src/proto/teaclave_frontend_service.proto 
b/services/proto/src/proto/teaclave_frontend_service.proto
index 07c23987..2a94a3a0 100644
--- a/services/proto/src/proto/teaclave_frontend_service.proto
+++ b/services/proto/src/proto/teaclave_frontend_service.proto
@@ -23,6 +23,7 @@ syntax = "proto3";
 package teaclave_frontend_service_proto;
 
 import "teaclave_common.proto";
+import "google/protobuf/empty.proto";
 
 message RegisterInputFileRequest {
   string url = 1;
@@ -183,15 +184,10 @@ message DeleteFunctionRequest {
   string function_id = 1;
 }
 
-message DeleteFunctionResponse { }
-
 message DisableFunctionRequest {
   string function_id = 1;
 }
 
-message DisableFunctionResponse { }
-
-
 message ListFunctionsRequest {
   string user_id = 1;
 }
@@ -244,26 +240,18 @@ message AssignDataRequest {
   repeated DataMap outputs = 3;
 }
 
-message AssignDataResponse { }
-
 message ApproveTaskRequest {
   string task_id = 1;
 }
 
-message ApproveTaskResponse { }
-
 message InvokeTaskRequest {
   string task_id = 1;
 }
 
-message InvokeTaskResponse { }
-
 message CancelTaskRequest {
   string task_id = 1;
 }
 
-message CancelTaskResponse { }
-
 service TeaclaveFrontend {
   rpc RegisterInputFile (RegisterInputFileRequest) returns 
(RegisterInputFileResponse);
   rpc RegisterOutputFile (RegisterOutputFileRequest) returns 
(RegisterOutputFileResponse);
@@ -278,12 +266,12 @@ service TeaclaveFrontend {
   rpc GetFunctionUsageStats (GetFunctionUsageStatsRequest) returns 
(GetFunctionUsageStatsResponse);
   rpc UpdateFunction (UpdateFunctionRequest) returns (UpdateFunctionResponse);
   rpc ListFunctions (ListFunctionsRequest) returns (ListFunctionsResponse);
-  rpc DeleteFunction (DeleteFunctionRequest) returns (DeleteFunctionResponse);
-  rpc DisableFunction (DisableFunctionRequest) returns 
(DisableFunctionResponse);
+  rpc DeleteFunction (DeleteFunctionRequest) returns (google.protobuf.Empty);
+  rpc DisableFunction (DisableFunctionRequest) returns (google.protobuf.Empty);
   rpc CreateTask (CreateTaskRequest) returns (CreateTaskResponse);
   rpc GetTask (GetTaskRequest) returns (GetTaskResponse);
-  rpc AssignData (AssignDataRequest) returns (AssignDataResponse);
-  rpc ApproveTask (ApproveTaskRequest) returns (ApproveTaskResponse);
-  rpc InvokeTask (InvokeTaskRequest) returns (InvokeTaskResponse);
-  rpc CancelTask (CancelTaskRequest) returns (CancelTaskResponse);
+  rpc AssignData (AssignDataRequest) returns (google.protobuf.Empty);
+  rpc ApproveTask (ApproveTaskRequest) returns (google.protobuf.Empty);
+  rpc InvokeTask (InvokeTaskRequest) returns (google.protobuf.Empty);
+  rpc CancelTask (CancelTaskRequest) returns (google.protobuf.Empty);
 }
diff --git a/services/proto/src/proto/teaclave_management_service.proto 
b/services/proto/src/proto/teaclave_management_service.proto
index 7d9639ab..21285c53 100644
--- a/services/proto/src/proto/teaclave_management_service.proto
+++ b/services/proto/src/proto/teaclave_management_service.proto
@@ -23,6 +23,7 @@ syntax = "proto3";
 package teaclave_management_service_proto;
 
 import "teaclave_frontend_service.proto";
+import "google/protobuf/empty.proto";
 
 service TeaclaveManagement {
   rpc RegisterInputFile 
(teaclave_frontend_service_proto.RegisterInputFileRequest) returns 
(teaclave_frontend_service_proto.RegisterInputFileResponse);
@@ -37,13 +38,13 @@ service TeaclaveManagement {
   rpc UpdateFunction (teaclave_frontend_service_proto.UpdateFunctionRequest) 
returns (teaclave_frontend_service_proto.UpdateFunctionResponse);
   rpc GetFunction (teaclave_frontend_service_proto.GetFunctionRequest) returns 
(teaclave_frontend_service_proto.GetFunctionResponse);
   rpc GetFunctionUsageStats 
(teaclave_frontend_service_proto.GetFunctionUsageStatsRequest) returns 
(teaclave_frontend_service_proto.GetFunctionUsageStatsResponse);
-  rpc DeleteFunction (teaclave_frontend_service_proto.DeleteFunctionRequest) 
returns (teaclave_frontend_service_proto.DeleteFunctionResponse);
-  rpc DisableFunction (teaclave_frontend_service_proto.DisableFunctionRequest) 
returns (teaclave_frontend_service_proto.DisableFunctionResponse);
+  rpc DeleteFunction (teaclave_frontend_service_proto.DeleteFunctionRequest) 
returns (google.protobuf.Empty);
+  rpc DisableFunction (teaclave_frontend_service_proto.DisableFunctionRequest) 
returns (google.protobuf.Empty);
   rpc ListFunctions (teaclave_frontend_service_proto.ListFunctionsRequest) 
returns (teaclave_frontend_service_proto.ListFunctionsResponse);
   rpc CreateTask (teaclave_frontend_service_proto.CreateTaskRequest) returns 
(teaclave_frontend_service_proto.CreateTaskResponse);
   rpc GetTask (teaclave_frontend_service_proto.GetTaskRequest) returns 
(teaclave_frontend_service_proto.GetTaskResponse);
-  rpc AssignData (teaclave_frontend_service_proto.AssignDataRequest) returns 
(teaclave_frontend_service_proto.AssignDataResponse);
-  rpc ApproveTask (teaclave_frontend_service_proto.ApproveTaskRequest) returns 
(teaclave_frontend_service_proto.ApproveTaskResponse);
-  rpc InvokeTask (teaclave_frontend_service_proto.InvokeTaskRequest) returns 
(teaclave_frontend_service_proto.InvokeTaskResponse);
-  rpc CancelTask (teaclave_frontend_service_proto.CancelTaskRequest) returns 
(teaclave_frontend_service_proto.CancelTaskResponse);
+  rpc AssignData (teaclave_frontend_service_proto.AssignDataRequest) returns 
(google.protobuf.Empty);
+  rpc ApproveTask (teaclave_frontend_service_proto.ApproveTaskRequest) returns 
(google.protobuf.Empty);
+  rpc InvokeTask (teaclave_frontend_service_proto.InvokeTaskRequest) returns 
(google.protobuf.Empty);
+  rpc CancelTask (teaclave_frontend_service_proto.CancelTaskRequest) returns 
(google.protobuf.Empty);
 }
diff --git a/services/proto/src/proto/teaclave_scheduler_service.proto 
b/services/proto/src/proto/teaclave_scheduler_service.proto
index 9f9f3ad1..35711c03 100644
--- a/services/proto/src/proto/teaclave_scheduler_service.proto
+++ b/services/proto/src/proto/teaclave_scheduler_service.proto
@@ -22,8 +22,8 @@ syntax = "proto3";
 package teaclave_scheduler_service_proto;
 
 import "teaclave_common.proto";
+import "google/protobuf/empty.proto";
 
-message SubscribeRequest {}
 message SubscribeResponse {
   bool success = 1;
 }
@@ -47,29 +47,27 @@ message UpdateTaskStatusRequest {
   string task_id = 1;
   teaclave_common_proto.TaskStatus task_status = 2;
 }
-message UpdateTaskStatusResponse {}
 
 message UpdateTaskResultRequest {
   string task_id = 1;
   teaclave_common_proto.TaskResult result = 2;
 }
-message UpdateTaskResultResponse {}
+
 
 message PublishTaskRequest {
   bytes staged_task = 1;
 }
-message PublishTaskResponse {}
 
 service TeaclaveScheduler {
   // Publisher
-  rpc PublishTask(PublishTaskRequest) returns (PublishTaskResponse);
+  rpc PublishTask(PublishTaskRequest) returns (google.protobuf.Empty);
 
   // Subscriber
-  rpc Subscribe(SubscribeRequest) returns (SubscribeResponse);
+  rpc Subscribe(google.protobuf.Empty) returns (SubscribeResponse);
   rpc PullTask(PullTaskRequest) returns (PullTaskResponse);
 
-  rpc UpdateTaskStatus(UpdateTaskStatusRequest) returns 
(UpdateTaskStatusResponse);
-  rpc UpdateTaskResult(UpdateTaskResultRequest) returns 
(UpdateTaskResultResponse);
+  rpc UpdateTaskStatus(UpdateTaskStatusRequest) returns 
(google.protobuf.Empty);
+  rpc UpdateTaskResult(UpdateTaskResultRequest) returns 
(google.protobuf.Empty);
 
   rpc Heartbeat(HeartbeatRequest) returns (HeartbeatResponse);
 }
diff --git a/services/proto/src/proto/teaclave_storage_service.proto 
b/services/proto/src/proto/teaclave_storage_service.proto
index 0e78952b..5b2a58d4 100644
--- a/services/proto/src/proto/teaclave_storage_service.proto
+++ b/services/proto/src/proto/teaclave_storage_service.proto
@@ -21,6 +21,8 @@
 syntax = "proto3";
 package teaclave_storage_service_proto;
 
+import "google/protobuf/empty.proto";
+
 message GetRequest {
   bytes key = 1;
 }
@@ -34,21 +36,15 @@ message PutRequest {
   bytes value = 2;
 }
 
-message PutResponse { }
-
 message DeleteRequest {
   bytes key = 1;
 }
 
-message DeleteResponse { }
-
 message EnqueueRequest {
   bytes key = 1;
   bytes value = 2;
 }
 
-message EnqueueResponse { }
-
 message DequeueRequest {
   bytes key = 1;
 }
@@ -67,9 +63,9 @@ message GetKeysByPrefixResponse {
 
 service TeaclaveStorage {
   rpc Get(GetRequest) returns (GetResponse);
-  rpc Put(PutRequest) returns (PutResponse);
-  rpc Delete(DeleteRequest) returns (DeleteResponse);
-  rpc Enqueue(EnqueueRequest) returns (EnqueueResponse);
+  rpc Put(PutRequest) returns (google.protobuf.Empty);
+  rpc Delete(DeleteRequest) returns (google.protobuf.Empty);
+  rpc Enqueue(EnqueueRequest) returns (google.protobuf.Empty);
   rpc Dequeue(DequeueRequest) returns (DequeueResponse);
   rpc GetKeysByPrefix(GetKeysByPrefixRequest) returns 
(GetKeysByPrefixResponse);
 }
diff --git a/services/proto/src/teaclave_management_service.rs 
b/services/proto/src/teaclave_management_service.rs
index 2339e401..4d178dcd 100644
--- a/services/proto/src/teaclave_management_service.rs
+++ b/services/proto/src/teaclave_management_service.rs
@@ -54,9 +54,7 @@ pub type GetFunctionUsageStatsRequest =
 pub type GetFunctionUsageStatsResponse =
     crate::teaclave_frontend_service::GetFunctionUsageStatsResponse;
 pub type DeleteFunctionRequest = 
crate::teaclave_frontend_service::DeleteFunctionRequest;
-pub type DeleteFunctionResponse = 
crate::teaclave_frontend_service::DeleteFunctionResponse;
 pub type DisableFunctionRequest = 
crate::teaclave_frontend_service::DisableFunctionRequest;
-pub type DisableFunctionResponse = 
crate::teaclave_frontend_service::DisableFunctionResponse;
 pub type GetFunctionRequest = 
crate::teaclave_frontend_service::GetFunctionRequest;
 pub type GetFunctionResponse = 
crate::teaclave_frontend_service::GetFunctionResponse;
 pub type ListFunctionsRequest = 
crate::teaclave_frontend_service::ListFunctionsRequest;
@@ -66,10 +64,6 @@ pub type CreateTaskResponse = 
crate::teaclave_frontend_service::CreateTaskRespon
 pub type GetTaskRequest = crate::teaclave_frontend_service::GetTaskRequest;
 pub type GetTaskResponse = crate::teaclave_frontend_service::GetTaskResponse;
 pub type AssignDataRequest = 
crate::teaclave_frontend_service::AssignDataRequest;
-pub type AssignDataResponse = 
crate::teaclave_frontend_service::AssignDataResponse;
 pub type ApproveTaskRequest = 
crate::teaclave_frontend_service::ApproveTaskRequest;
-pub type ApproveTaskResponse = 
crate::teaclave_frontend_service::ApproveTaskResponse;
 pub type InvokeTaskRequest = 
crate::teaclave_frontend_service::InvokeTaskRequest;
-pub type InvokeTaskResponse = 
crate::teaclave_frontend_service::InvokeTaskResponse;
 pub type CancelTaskRequest = 
crate::teaclave_frontend_service::CancelTaskRequest;
-pub type CancelTaskResponse = 
crate::teaclave_frontend_service::CancelTaskResponse;
diff --git a/services/proto/src/teaclave_scheduler_service.rs 
b/services/proto/src/teaclave_scheduler_service.rs
index abaca663..a8c43396 100644
--- a/services/proto/src/teaclave_scheduler_service.rs
+++ b/services/proto/src/teaclave_scheduler_service.rs
@@ -25,10 +25,7 @@ pub use proto::{
     HeartbeatRequest, PublishTaskRequest, PullTaskRequest, 
UpdateTaskResultRequest,
     UpdateTaskStatusRequest,
 };
-pub use proto::{
-    HeartbeatResponse, PublishTaskResponse, PullTaskResponse, 
SubscribeRequest, SubscribeResponse,
-    UpdateTaskResultResponse, UpdateTaskStatusResponse,
-};
+pub use proto::{HeartbeatResponse, PullTaskResponse, SubscribeResponse};
 use teaclave_types::Storable;
 use teaclave_types::{StagedTask, TaskFailure, TaskOutputs, TaskResult, 
TaskStatus};
 use uuid::Uuid;
diff --git a/services/proto/src/teaclave_storage_service.rs 
b/services/proto/src/teaclave_storage_service.rs
index d65f6c58..817b85cf 100644
--- a/services/proto/src/teaclave_storage_service.rs
+++ b/services/proto/src/teaclave_storage_service.rs
@@ -20,9 +20,8 @@ pub use proto::teaclave_storage_client::TeaclaveStorageClient;
 pub use proto::teaclave_storage_server::TeaclaveStorage;
 pub use proto::teaclave_storage_server::TeaclaveStorageServer;
 pub use proto::{
-    DeleteRequest, DeleteResponse, DequeueRequest, DequeueResponse, 
EnqueueRequest,
-    EnqueueResponse, GetKeysByPrefixRequest, GetKeysByPrefixResponse, 
GetRequest, GetResponse,
-    PutRequest, PutResponse,
+    DeleteRequest, DequeueRequest, DequeueResponse, EnqueueRequest, 
GetKeysByPrefixRequest,
+    GetKeysByPrefixResponse, GetRequest, GetResponse, PutRequest,
 };
 
 impl GetRequest {
@@ -107,9 +106,7 @@ pub enum TeaclaveStorageRequest {
 #[serde(tag = "response", content = "content", rename_all = "snake_case")]
 pub enum TeaclaveStorageResponse {
     Get(GetResponse),
-    Put(PutResponse),
-    Delete(DeleteResponse),
-    Enqueue(EnqueueResponse),
     Dequeue(DequeueResponse),
     GetKeysByPrefix(GetKeysByPrefixResponse),
+    Empty(()),
 }
diff --git a/services/scheduler/enclave/src/service.rs 
b/services/scheduler/enclave/src/service.rs
index e3be03bd..07aa7b10 100644
--- a/services/scheduler/enclave/src/service.rs
+++ b/services/scheduler/enclave/src/service.rs
@@ -241,7 +241,7 @@ impl TeaclaveScheduler for TeaclaveSchedulerService {
     async fn publish_task(
         &self,
         request: Request<PublishTaskRequest>,
-    ) -> TeaclaveServiceResponseResult<PublishTaskResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         // XXX: Publisher is not implemented
 
         let mut resources = self.resources.lock().await;
@@ -249,13 +249,13 @@ impl TeaclaveScheduler for TeaclaveSchedulerService {
         let staged_task =
             
StagedTask::from_slice(&request.get_ref().staged_task).map_err(tonic_error)?;
         resources.task_queue.push_back(staged_task);
-        Ok(Response::new(PublishTaskResponse {}))
+        Ok(Response::new(()))
     }
 
     // Subscriber
     async fn subscribe(
         &self,
-        _request: Request<SubscribeRequest>,
+        _request: Request<()>,
     ) -> TeaclaveServiceResponseResult<SubscribeResponse> {
         // TODO: subscribe a specific topic
         unimplemented!()
@@ -336,7 +336,7 @@ impl TeaclaveScheduler for TeaclaveSchedulerService {
     async fn update_task_status(
         &self,
         request: Request<UpdateTaskStatusRequest>,
-    ) -> TeaclaveServiceResponseResult<UpdateTaskStatusResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         let resources = self.resources.lock().await;
 
         let task_id = 
Uuid::parse_str(&request.get_ref().task_id).map_err(tonic_error)?;
@@ -351,13 +351,13 @@ impl TeaclaveScheduler for TeaclaveSchedulerService {
 
         let ts = TaskState::from(task);
         resources.put_into_db(&ts).await.map_err(tonic_error)?;
-        Ok(Response::new(UpdateTaskStatusResponse {}))
+        Ok(Response::new(()))
     }
 
     async fn update_task_result(
         &self,
         request: Request<UpdateTaskResultRequest>,
-    ) -> TeaclaveServiceResponseResult<UpdateTaskResultResponse> {
+    ) -> TeaclaveServiceResponseResult<()> {
         let resources = self.resources.lock().await;
 
         let request = request.into_inner();
@@ -382,6 +382,6 @@ impl TeaclaveScheduler for TeaclaveSchedulerService {
 
         let ts = TaskState::from(task);
         resources.put_into_db(&ts).await.map_err(tonic_error)?;
-        Ok(Response::new(UpdateTaskResultResponse {}))
+        Ok(Response::new(()))
     }
 }
diff --git a/services/storage/enclave/src/proxy.rs 
b/services/storage/enclave/src/proxy.rs
index a2bfdfc9..f17dbe6b 100644
--- a/services/storage/enclave/src/proxy.rs
+++ b/services/storage/enclave/src/proxy.rs
@@ -33,7 +33,7 @@ impl ProxyService {
 }
 
 macro_rules! send_request {
-    ($service: ident,$request:expr,$fun:ident) => {{
+    ($service: ident,$request:expr,$fun:ident,$response:ident) => {{
         let (sender, mut receiver) = unbounded_channel();
         let request = $request.into_inner();
         $service
@@ -44,7 +44,7 @@ macro_rules! send_request {
             })
             .map_err(|_| StorageServiceError::Service(anyhow!("send 
ProxyRequest error")))?;
         match receiver.recv().await {
-            Some(Ok(TeaclaveStorageResponse::$fun(re))) => return 
Ok(Response::new(re)),
+            Some(Ok(TeaclaveStorageResponse::$response(re))) => return 
Ok(Response::new(re)),
             _ => return Err(teaclave_rpc::Status::internal("invalid 
response")),
         }
     }};
@@ -53,39 +53,33 @@ macro_rules! send_request {
 #[teaclave_rpc::async_trait]
 impl TeaclaveStorage for ProxyService {
     async fn get(&self, request: Request<GetRequest>) -> 
Result<Response<GetResponse>, Status> {
-        send_request!(self, request, Get)
+        send_request!(self, request, Get, Get)
     }
 
-    async fn put(&self, request: Request<PutRequest>) -> 
Result<Response<PutResponse>, Status> {
-        send_request!(self, request, Put)
+    async fn put(&self, request: Request<PutRequest>) -> Result<Response<()>, 
Status> {
+        send_request!(self, request, Put, Empty)
     }
 
-    async fn delete(
-        &self,
-        request: Request<DeleteRequest>,
-    ) -> Result<Response<DeleteResponse>, Status> {
-        send_request!(self, request, Delete)
+    async fn delete(&self, request: Request<DeleteRequest>) -> 
Result<Response<()>, Status> {
+        send_request!(self, request, Delete, Empty)
     }
 
-    async fn enqueue(
-        &self,
-        request: Request<EnqueueRequest>,
-    ) -> Result<Response<EnqueueResponse>, Status> {
-        send_request!(self, request, Enqueue)
+    async fn enqueue(&self, request: Request<EnqueueRequest>) -> 
Result<Response<()>, Status> {
+        send_request!(self, request, Enqueue, Empty)
     }
 
     async fn dequeue(
         &self,
         request: Request<DequeueRequest>,
     ) -> Result<Response<DequeueResponse>, Status> {
-        send_request!(self, request, Dequeue)
+        send_request!(self, request, Dequeue, Dequeue)
     }
 
     async fn get_keys_by_prefix(
         &self,
         request: Request<GetKeysByPrefixRequest>,
     ) -> Result<Response<GetKeysByPrefixResponse>, Status> {
-        send_request!(self, request, GetKeysByPrefix)
+        send_request!(self, request, GetKeysByPrefix, GetKeysByPrefix)
     }
 }
 
diff --git a/services/storage/enclave/src/service.rs 
b/services/storage/enclave/src/service.rs
index 9a98890c..7326f01f 100644
--- a/services/storage/enclave/src/service.rs
+++ b/services/storage/enclave/src/service.rs
@@ -170,30 +170,18 @@ impl TeaclaveStorageService {
         request: teaclave_rpc::Request<TeaclaveStorageRequest>,
     ) -> std::result::Result<TeaclaveStorageResponse, StorageServiceError> {
         match request.into_inner() {
-            TeaclaveStorageRequest::Get(r) => {
-                let response = self.get(r)?;
-                Ok(response).map(TeaclaveStorageResponse::Get)
-            }
-            TeaclaveStorageRequest::Put(r) => {
-                let response = self.put(r)?;
-                Ok(response).map(TeaclaveStorageResponse::Put)
-            }
-            TeaclaveStorageRequest::Delete(r) => {
-                let response = self.delete(r)?;
-                Ok(response).map(TeaclaveStorageResponse::Delete)
-            }
+            TeaclaveStorageRequest::Get(r) => 
self.get(r).map(TeaclaveStorageResponse::Get),
+            TeaclaveStorageRequest::Put(r) => 
self.put(r).map(TeaclaveStorageResponse::Empty),
+            TeaclaveStorageRequest::Delete(r) => 
self.delete(r).map(TeaclaveStorageResponse::Empty),
             TeaclaveStorageRequest::Enqueue(r) => {
-                let response = self.enqueue(r)?;
-                Ok(response).map(TeaclaveStorageResponse::Enqueue)
+                self.enqueue(r).map(TeaclaveStorageResponse::Empty)
             }
             TeaclaveStorageRequest::Dequeue(r) => {
-                let response = self.dequeue(r)?;
-                Ok(response).map(TeaclaveStorageResponse::Dequeue)
-            }
-            TeaclaveStorageRequest::GetKeysByPrefix(r) => {
-                let response = self.get_keys_by_prefix(r)?;
-                Ok(response).map(TeaclaveStorageResponse::GetKeysByPrefix)
+                self.dequeue(r).map(TeaclaveStorageResponse::Dequeue)
             }
+            TeaclaveStorageRequest::GetKeysByPrefix(r) => self
+                .get_keys_by_prefix(r)
+                .map(TeaclaveStorageResponse::GetKeysByPrefix),
         }
     }
 }
@@ -206,7 +194,7 @@ impl TeaclaveStorageService {
         }
     }
 
-    fn put(&self, request: PutRequest) -> std::result::Result<PutResponse, 
StorageServiceError> {
+    fn put(&self, request: PutRequest) -> std::result::Result<(), 
StorageServiceError> {
         self.database
             .borrow_mut()
             .put(&request.key, &request.value)
@@ -216,13 +204,10 @@ impl TeaclaveStorageService {
             .borrow_mut()
             .flush()
             .map_err(StorageServiceError::Database)?;
-        Ok(PutResponse {})
+        Ok(())
     }
 
-    fn delete(
-        &self,
-        request: DeleteRequest,
-    ) -> std::result::Result<DeleteResponse, StorageServiceError> {
+    fn delete(&self, request: DeleteRequest) -> std::result::Result<(), 
StorageServiceError> {
         self.database
             .borrow_mut()
             .delete(&request.key)
@@ -232,17 +217,14 @@ impl TeaclaveStorageService {
             .borrow_mut()
             .flush()
             .map_err(StorageServiceError::Database)?;
-        Ok(DeleteResponse {})
+        Ok(())
     }
 
-    fn enqueue(
-        &self,
-        request: EnqueueRequest,
-    ) -> std::result::Result<EnqueueResponse, StorageServiceError> {
+    fn enqueue(&self, request: EnqueueRequest) -> std::result::Result<(), 
StorageServiceError> {
         let mut db = self.database.borrow_mut();
         let mut queue = DBQueue::open(&mut db, &request.key);
         match queue.enqueue(&request.value) {
-            Ok(_) => Ok(EnqueueResponse {}),
+            Ok(_) => Ok(()),
             Err(e) => bail!(e),
         }
     }
diff --git a/tests/functional/enclave/src/end_to_end/mod.rs 
b/tests/functional/enclave/src/end_to_end/mod.rs
index 93383712..1f8e9863 100644
--- a/tests/functional/enclave/src/end_to_end/mod.rs
+++ b/tests/functional/enclave/src/end_to_end/mod.rs
@@ -69,8 +69,7 @@ async fn approve_task(
     task_id: &ExternalID,
 ) -> anyhow::Result<()> {
     let request = ApproveTaskRequest::new(task_id.clone());
-    let response = client.approve_task(request).await?.into_inner();
-    log::debug!("Approve task: {:?}", response);
+    client.approve_task(request).await?;
     Ok(())
 }
 
@@ -79,7 +78,6 @@ async fn invoke_task(
     task_id: &ExternalID,
 ) -> anyhow::Result<()> {
     let request = InvokeTaskRequest::new(task_id.clone());
-    let response = client.invoke_task(request).await?.into_inner();
-    log::debug!("Invoke task: {:?}", response);
+    client.invoke_task(request).await?;
     Ok(())
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to