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

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


The following commit(s) were added to refs/heads/master by this push:
     new b02e44c  Change the executor's payload type from String to Vec<u8> 
(#503)
b02e44c is described below

commit b02e44cb7431203863a5117e9109878df07b336e
Author: Hongbo <[email protected]>
AuthorDate: Mon Jun 7 18:50:24 2021 -0400

    Change the executor's payload type from String to Vec<u8> (#503)
---
 executor/src/builtin.rs                   |  2 +-
 executor/src/mesapy.rs                    | 14 +++++++++-----
 services/execution/enclave/src/service.rs |  3 +--
 types/src/staged_function.rs              |  9 +++------
 types/src/worker.rs                       |  2 +-
 5 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/executor/src/builtin.rs b/executor/src/builtin.rs
index 070bd88..a327432 100644
--- a/executor/src/builtin.rs
+++ b/executor/src/builtin.rs
@@ -35,7 +35,7 @@ impl TeaclaveExecutor for BuiltinFunctionExecutor {
         &self,
         name: String,
         arguments: FunctionArguments,
-        _payload: String,
+        _payload: Vec<u8>,
         runtime: FunctionRuntime,
     ) -> Result<String> {
         match name.as_str() {
diff --git a/executor/src/mesapy.rs b/executor/src/mesapy.rs
index 825ae53..713149c 100644
--- a/executor/src/mesapy.rs
+++ b/executor/src/mesapy.rs
@@ -47,7 +47,7 @@ impl TeaclaveExecutor for MesaPy {
         &self,
         _name: String,
         arguments: FunctionArguments,
-        payload: String,
+        mut payload: Vec<u8>,
         runtime: FunctionRuntime,
     ) -> anyhow::Result<String> {
         let py_argv = arguments.into_vec();
@@ -56,8 +56,7 @@ impl TeaclaveExecutor for MesaPy {
             .map(|arg| CString::new(arg.as_str()).unwrap())
             .collect();
 
-        let mut script_bytes = payload.into_bytes();
-        script_bytes.push(0u8);
+        payload.push(0u8);
 
         let mut p_argv: Vec<_> = cstr_argv
             .iter() // do NOT into_iter()
@@ -72,7 +71,7 @@ impl TeaclaveExecutor for MesaPy {
 
         let result = unsafe {
             mesapy_exec(
-                script_bytes.as_ptr(),
+                payload.as_ptr(),
                 p_argv.len() - 1,
                 p_argv.as_ptr(),
                 &mut py_result as *mut _ as *mut u8,
@@ -169,7 +168,12 @@ def entrypoint(argv):
 
         let function = MesaPy::default();
         let summary = function
-            .execute("".to_string(), py_args, py_payload.to_string(), runtime)
+            .execute(
+                "".to_string(),
+                py_args,
+                py_payload.as_bytes().to_vec(),
+                runtime,
+            )
             .unwrap();
         assert_eq!(summary, "");
     }
diff --git a/services/execution/enclave/src/service.rs 
b/services/execution/enclave/src/service.rs
index 8d368c9..116e9af 100644
--- a/services/execution/enclave/src/service.rs
+++ b/services/execution/enclave/src/service.rs
@@ -156,14 +156,13 @@ impl TeaclaveExecutionService {
 fn prepare_task(task: &StagedTask, file_mgr: &TaskFileManager) -> 
Result<StagedFunction> {
     let input_files = file_mgr.prepare_staged_inputs()?;
     let output_files = file_mgr.prepare_staged_outputs()?;
-    let function_payload = 
String::from_utf8_lossy(&task.function_payload).to_string();
 
     let staged_function = StagedFunction::new()
         .executor_type(task.executor_type)
         .executor(task.executor)
         .name(&task.function_name)
         .arguments(task.function_arguments.clone())
-        .payload(function_payload)
+        .payload(task.function_payload.clone())
         .input_files(input_files)
         .output_files(output_files)
         .runtime_name("default");
diff --git a/types/src/staged_function.rs b/types/src/staged_function.rs
index 284191a..a8133bc 100644
--- a/types/src/staged_function.rs
+++ b/types/src/staged_function.rs
@@ -108,7 +108,7 @@ impl FunctionArguments {
 pub struct StagedFunction {
     pub name: String,
     pub arguments: FunctionArguments,
-    pub payload: String,
+    pub payload: Vec<u8>,
     pub input_files: StagedFiles,
     pub output_files: StagedFiles,
     pub executor_type: ExecutorType,
@@ -132,11 +132,8 @@ impl StagedFunction {
         Self { executor, ..self }
     }
 
-    pub fn payload(self, payload: impl ToString) -> Self {
-        Self {
-            payload: payload.to_string(),
-            ..self
-        }
+    pub fn payload(self, payload: Vec<u8>) -> Self {
+        Self { payload, ..self }
     }
 
     pub fn arguments(self, arguments: FunctionArguments) -> Self {
diff --git a/types/src/worker.rs b/types/src/worker.rs
index aa9ced6..37c5991 100644
--- a/types/src/worker.rs
+++ b/types/src/worker.rs
@@ -32,7 +32,7 @@ pub trait TeaclaveExecutor {
         &self,
         name: String,
         arguments: FunctionArguments,
-        payload: String,
+        payload: Vec<u8>,
         runtime: FunctionRuntime,
     ) -> anyhow::Result<String>;
 }

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

Reply via email to