better encapsulation of obj_ptr

This commit is contained in:
Ivan Folgueira Bande 2024-11-22 14:13:54 +01:00
parent 5b5f200b8d
commit e86b325bc9
No known key found for this signature in database
GPG Key ID: 3C117481F89E24A7
7 changed files with 21 additions and 17 deletions

View File

@ -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::<GameState>(&msg)
{

View File

@ -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<Mutex<Box<dyn FnMut(LibwakuResponse) + Send + Sync>>>,
}
@ -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<F: FnMut(LibwakuResponse) + 'static + Sync + Send>(

View File

@ -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,
);

View File

@ -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,

View File

@ -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<String> {
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<Vec<Multiaddr>> {
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)

View File

@ -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))

View File

@ -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,