mirror of
https://github.com/logos-messaging/logos-messaging-rust-bindings.git
synced 2026-01-06 07:53:06 +00:00
better encapsulation of obj_ptr
This commit is contained in:
parent
5b5f200b8d
commit
e86b325bc9
@ -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)
|
||||
{
|
||||
|
||||
@ -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>(
|
||||
|
||||
@ -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,
|
||||
);
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user