From e86b325bc9bb21a615209457f3977a696b00e11a Mon Sep 17 00:00:00 2001 From: Ivan Folgueira Bande Date: Fri, 22 Nov 2024 14:13:54 +0100 Subject: [PATCH] better encapsulation of obj_ptr --- examples/tic-tac-toe-gui/src/main.rs | 2 +- waku-bindings/src/node/events.rs | 6 +++++- waku-bindings/src/node/filter.rs | 6 +++--- waku-bindings/src/node/lightpush.rs | 2 +- waku-bindings/src/node/management.rs | 10 +++++----- waku-bindings/src/node/peers.rs | 4 ++-- waku-bindings/src/node/relay.rs | 8 ++++---- 7 files changed, 21 insertions(+), 17 deletions(-) diff --git a/examples/tic-tac-toe-gui/src/main.rs b/examples/tic-tac-toe-gui/src/main.rs index 72bb5ca..1544576 100644 --- a/examples/tic-tac-toe-gui/src/main.rs +++ b/examples/tic-tac-toe-gui/src/main.rs @@ -333,7 +333,7 @@ async fn main() -> eframe::Result<()> { // Listen for messages in the main thread tokio::spawn(async move { while let Some(msg) = rx.recv().await { - println!("MSG received: {}", msg); + // println!("MSG received: {}", msg); // Handle the received message, e.g., update the UI or game state if let Ok(parsed_value) = serde_json::from_str::(&msg) { diff --git a/waku-bindings/src/node/events.rs b/waku-bindings/src/node/events.rs index 673d4f5..26214cf 100644 --- a/waku-bindings/src/node/events.rs +++ b/waku-bindings/src/node/events.rs @@ -18,7 +18,7 @@ use crate::MessageHash; use std::sync::{Arc, Mutex}; pub struct WakuNodeContext { - pub obj_ptr: *mut c_void, + obj_ptr: *mut c_void, msg_observer: Arc>>, } @@ -55,6 +55,10 @@ impl WakuNodeContext { } } + pub fn get_ptr(&self) -> *mut c_void { + self.obj_ptr + } + /// Register callback to act as event handler and receive application events, /// which are used to react to asynchronous events in Waku pub fn waku_set_event_callback( diff --git a/waku-bindings/src/node/filter.rs b/waku-bindings/src/node/filter.rs index 6a16f56..329585e 100644 --- a/waku-bindings/src/node/filter.rs +++ b/waku-bindings/src/node/filter.rs @@ -30,7 +30,7 @@ pub fn waku_filter_subscribe( let mut closure = result_cb; let cb = get_trampoline(&closure); let out = waku_sys::waku_filter_subscribe( - ctx.obj_ptr, + ctx.get_ptr(), pubsub_topic_ptr, content_topics_ptr, cb, @@ -67,7 +67,7 @@ pub fn waku_filter_unsubscribe( let mut closure = result_cb; let cb = get_trampoline(&closure); let out = waku_sys::waku_filter_unsubscribe( - ctx.obj_ptr, + ctx.get_ptr(), pubsub_topic_ptr, content_topics_topics_ptr, cb, @@ -90,7 +90,7 @@ pub fn waku_filter_unsubscribe_all(ctx: &WakuNodeContext) -> Result<()> { let mut closure = result_cb; let cb = get_trampoline(&closure); let out = waku_sys::waku_filter_unsubscribe_all( - ctx.obj_ptr, + ctx.get_ptr(), cb, &mut closure as *mut _ as *mut c_void, ); diff --git a/waku-bindings/src/node/lightpush.rs b/waku-bindings/src/node/lightpush.rs index f1c7290..ee07b32 100644 --- a/waku-bindings/src/node/lightpush.rs +++ b/waku-bindings/src/node/lightpush.rs @@ -32,7 +32,7 @@ pub fn waku_lightpush_publish_message( let mut closure = result_cb; let cb = get_trampoline(&closure); let out = waku_sys::waku_lightpush_publish( - ctx.obj_ptr, + ctx.get_ptr(), pubsub_topic_ptr, message_ptr, cb, diff --git a/waku-bindings/src/node/management.rs b/waku-bindings/src/node/management.rs index 3533544..04a0126 100644 --- a/waku-bindings/src/node/management.rs +++ b/waku-bindings/src/node/management.rs @@ -53,7 +53,7 @@ pub fn waku_destroy(ctx: &WakuNodeContext) -> Result<()> { let code = unsafe { let mut closure = result_cb; let cb = get_trampoline(&closure); - waku_sys::waku_destroy(ctx.obj_ptr, cb, &mut closure as *mut _ as *mut c_void) + waku_sys::waku_destroy(ctx.get_ptr(), cb, &mut closure as *mut _ as *mut c_void) }; handle_no_response(code, result) @@ -67,7 +67,7 @@ pub fn waku_start(ctx: &WakuNodeContext) -> Result<()> { let code = unsafe { let mut closure = result_cb; let cb = get_trampoline(&closure); - waku_sys::waku_start(ctx.obj_ptr, cb, &mut closure as *mut _ as *mut c_void) + waku_sys::waku_start(ctx.get_ptr(), cb, &mut closure as *mut _ as *mut c_void) }; handle_no_response(code, result) @@ -81,7 +81,7 @@ pub fn waku_stop(ctx: &WakuNodeContext) -> Result<()> { let code = unsafe { let mut closure = result_cb; let cb = get_trampoline(&closure); - waku_sys::waku_stop(ctx.obj_ptr, cb, &mut closure as *mut _ as *mut c_void) + waku_sys::waku_stop(ctx.get_ptr(), cb, &mut closure as *mut _ as *mut c_void) }; handle_no_response(code, result) @@ -95,7 +95,7 @@ pub fn waku_version(ctx: &WakuNodeContext) -> Result { let code = unsafe { let mut closure = result_cb; let cb = get_trampoline(&closure); - waku_sys::waku_version(ctx.obj_ptr, cb, &mut closure as *mut _ as *mut c_void) + waku_sys::waku_version(ctx.get_ptr(), cb, &mut closure as *mut _ as *mut c_void) }; handle_response(code, result) @@ -120,7 +120,7 @@ pub fn waku_listen_addresses(ctx: &WakuNodeContext) -> Result> { let code = unsafe { let mut closure = result_cb; let cb = get_trampoline(&closure); - waku_sys::waku_listen_addresses(ctx.obj_ptr, cb, &mut closure as *mut _ as *mut c_void) + waku_sys::waku_listen_addresses(ctx.get_ptr(), cb, &mut closure as *mut _ as *mut c_void) }; handle_json_response(code, result) diff --git a/waku-bindings/src/node/peers.rs b/waku-bindings/src/node/peers.rs index ccdaf46..87f5664 100644 --- a/waku-bindings/src/node/peers.rs +++ b/waku-bindings/src/node/peers.rs @@ -8,9 +8,9 @@ use libc::*; use multiaddr::Multiaddr; // internal use crate::general::Result; +use crate::node::events::WakuNodeContext; use crate::utils::LibwakuResponse; use crate::utils::{get_trampoline, handle_no_response}; -use crate::node::events::WakuNodeContext; /// Dial peer using a multiaddress /// If `timeout` as milliseconds doesn't fit into a `i32` it is clamped to [`i32::MAX`] @@ -32,7 +32,7 @@ pub fn waku_connect( let mut closure = result_cb; let cb = get_trampoline(&closure); let out = waku_sys::waku_connect( - ctx.obj_ptr, + ctx.get_ptr(), address_ptr, timeout .map(|duration| duration.as_millis().try_into().unwrap_or(u32::MAX)) diff --git a/waku-bindings/src/node/relay.rs b/waku-bindings/src/node/relay.rs index 5848187..4134a0d 100644 --- a/waku-bindings/src/node/relay.rs +++ b/waku-bindings/src/node/relay.rs @@ -36,7 +36,7 @@ pub fn waku_create_content_topic( let mut closure = result_cb; let cb = get_trampoline(&closure); let out = waku_sys::waku_content_topic( - ctx.obj_ptr, + ctx.get_ptr(), application_name_ptr, application_version, content_topic_name_ptr, @@ -81,7 +81,7 @@ pub fn waku_relay_publish_message( let mut closure = result_cb; let cb = get_trampoline(&closure); let out = waku_sys::waku_relay_publish( - ctx.obj_ptr, + ctx.get_ptr(), pubsub_topic_ptr, message_ptr, timeout @@ -117,7 +117,7 @@ pub fn waku_relay_subscribe(ctx: &WakuNodeContext, pubsub_topic: &str) -> Result let mut closure = result_cb; let cb = get_trampoline(&closure); let out = waku_sys::waku_relay_subscribe( - ctx.obj_ptr, + ctx.get_ptr(), pubsub_topic_ptr, cb, &mut closure as *mut _ as *mut c_void, @@ -143,7 +143,7 @@ pub fn waku_relay_unsubscribe(ctx: &WakuNodeContext, pubsub_topic: &String) -> R let mut closure = result_cb; let cb = get_trampoline(&closure); let out = waku_sys::waku_relay_subscribe( - ctx.obj_ptr, + ctx.get_ptr(), pubsub_topic_ptr, cb, &mut closure as *mut _ as *mut c_void,