From 67ebb3733a2f23d7e6ba5b19ec880608d56e3221 Mon Sep 17 00:00:00 2001 From: Dima Dorezyuk Date: Thu, 6 Feb 2025 11:40:19 +0100 Subject: [PATCH] Rust: fix optinal connection and add tests Signed-off-by: Dima Dorezyuk --- everestrs/everestrs-build/src/codegen.rs | 2 +- .../modules/RsOptionalConnection/BUILD.bazel | 35 ++++++++++++ .../RsOptionalConnection/manifest.yaml | 15 +++++ .../modules/RsOptionalConnection/src/main.rs | 57 +++++++++++++++++++ 4 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 everestrs/tests/modules/RsOptionalConnection/BUILD.bazel create mode 100644 everestrs/tests/modules/RsOptionalConnection/manifest.yaml create mode 100644 everestrs/tests/modules/RsOptionalConnection/src/main.rs diff --git a/everestrs/everestrs-build/src/codegen.rs b/everestrs/everestrs-build/src/codegen.rs index ef4ea680..d0a8930d 100644 --- a/everestrs/everestrs-build/src/codegen.rs +++ b/everestrs/everestrs-build/src/codegen.rs @@ -791,7 +791,7 @@ pub fn emit(manifest_path: PathBuf, everest_core: Vec) -> Result ::everestrs::Result { + log::info!("Received {key}"); + Ok(&key == "hello") + } +} + +impl ExampleClientSubscriber for OptionalConnection { + fn on_max_current(&self, _context: &Context, value: f64) { + log::info!("Received {value}"); + } + + fn on_error_raised(&self, _context: &Context, error: crate::generated::errors::example::Error) { + log::info!("Recieved an error {error:?}"); + } + + fn on_error_cleared( + &self, + _context: &Context, + error: crate::generated::errors::example::Error, + ) { + log::info!("Cleared an error {error:?} - what a relief"); + } +} + +impl OnReadySubscriber for OptionalConnection { + fn on_ready(&self, publishers: &ModulePublisher) { + log::info!("Ready"); + if let Some(publisher) = publishers.optional_connection_slots.get(0) { + let res = publisher.uses_something("hello".to_string()).unwrap(); + assert!(res); + } + } +} + +fn main() { + let one_class = Arc::new(OptionalConnection {}); + let _module = Module::new(one_class.clone(), one_class.clone(), |_index| {one_class.clone()}); + log::info!("Module initialized"); + + loop { + let dt = time::Duration::from_millis(250); + thread::sleep(dt); + } +}