From c54209ff98fd2568ea668c6dc92eb1e63d1c8abc Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 31 Aug 2022 12:19:29 +0200 Subject: [PATCH] Pass `SendOutput` by reference --- apis/c/operator/operator_types.h | 2 +- apis/rust/operator/macros/src/lib.rs | 2 +- apis/rust/operator/src/lib.rs | 4 ++-- apis/rust/operator/src/raw.rs | 2 +- apis/rust/operator/types/src/lib.rs | 2 +- binaries/runtime/src/operator/shared_lib.rs | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apis/c/operator/operator_types.h b/apis/c/operator/operator_types.h index 1f23a87d..251ed99b 100644 --- a/apis/c/operator/operator_types.h +++ b/apis/c/operator/operator_types.h @@ -139,7 +139,7 @@ typedef struct SendOutput { /** */ typedef struct DoraOnInput { /** */ - OnInputResult_t (*on_input)(Input_t const *, SendOutput_t, void *); + OnInputResult_t (*on_input)(Input_t const *, SendOutput_t const *, void *); } DoraOnInput_t; diff --git a/apis/rust/operator/macros/src/lib.rs b/apis/rust/operator/macros/src/lib.rs index 12bd44f5..1b685856 100644 --- a/apis/rust/operator/macros/src/lib.rs +++ b/apis/rust/operator/macros/src/lib.rs @@ -53,7 +53,7 @@ fn register_operator_impl(item: &TokenStream2) -> syn::Result { #[no_mangle] pub unsafe extern "C" fn dora_on_input( input: &dora_operator_api::types::Input, - send_output: dora_operator_api::types::SendOutput, + send_output: &dora_operator_api::types::SendOutput, operator_context: *mut std::ffi::c_void, ) -> dora_operator_api::types::OnInputResult { dora_operator_api::raw::dora_on_input::<#operator_ty>( diff --git a/apis/rust/operator/src/lib.rs b/apis/rust/operator/src/lib.rs index c3abebc9..dc3dc8de 100644 --- a/apis/rust/operator/src/lib.rs +++ b/apis/rust/operator/src/lib.rs @@ -18,9 +18,9 @@ pub trait DoraOperator: Default { ) -> Result; } -pub struct DoraOutputSender(SendOutput); +pub struct DoraOutputSender<'a>(&'a SendOutput); -impl DoraOutputSender { +impl DoraOutputSender<'_> { pub fn send(&mut self, id: String, data: Vec) -> Result<(), String> { let result = self.0.send_output.call(Output { id: id.into(), diff --git a/apis/rust/operator/src/raw.rs b/apis/rust/operator/src/raw.rs index 9ec0d9b7..6e561041 100644 --- a/apis/rust/operator/src/raw.rs +++ b/apis/rust/operator/src/raw.rs @@ -28,7 +28,7 @@ pub unsafe fn dora_drop_operator(operator_context: *mut c_void) -> DoraResult pub unsafe fn dora_on_input( input: &Input, - send_output: SendOutput, + send_output: &SendOutput, operator_context: *mut std::ffi::c_void, ) -> OnInputResult { let mut output_sender = DoraOutputSender(send_output); diff --git a/apis/rust/operator/types/src/lib.rs b/apis/rust/operator/types/src/lib.rs index 914d0211..2d66ec1b 100644 --- a/apis/rust/operator/types/src/lib.rs +++ b/apis/rust/operator/types/src/lib.rs @@ -47,7 +47,7 @@ pub struct DoraOnInput { pub struct OnInputFn( pub unsafe extern "C" fn( input: &Input, - send_output: SendOutput, + send_output: &SendOutput, operator_context: *mut std::ffi::c_void, ) -> OnInputResult, ); diff --git a/binaries/runtime/src/operator/shared_lib.rs b/binaries/runtime/src/operator/shared_lib.rs index d5f28686..6fe7d356 100644 --- a/binaries/runtime/src/operator/shared_lib.rs +++ b/binaries/runtime/src/operator/shared_lib.rs @@ -110,7 +110,7 @@ impl<'lib> SharedLibraryOperator<'lib> { } = unsafe { (self.bindings.on_input.on_input)( &operator_input, - send_output, + &send_output, operator_context.raw, ) };